#34296 Access Groups do not enforce as an allow-list (additive grant only; name-in-models bricks the key)
## What happened
Assigning a unified Access Group (Access Control -> Access Groups) to a key does not restrict that key to the group's models. The group is enforced as an additive grant, not as an allow list, so it effectively does nothing to constrain access
## Repro (live, litellm_internal_staging v1.95.0)
1. Create access group `ag-ui-test` whose only model is `anthropic-opus-4-8` 2. Create a key with `access_group_ids=["<that group id>"]` and no `models` 3. The key can call `anthropic-opus-4-8` (in group) AND `anthropic-haiku-4-5` (not in group)
``` # key created with access_group_ids only, models=[] call anthropic-opus-4-8 -> 200 OK call anthropic-haiku-4-5 -> 200 OK # NOT in the group, should be denied ```
Root cause: `can_key_call_model` (litellm/proxy/auth/auth_checks.py) first checks the key's native `models`, and only falls back to `access_group_ids` to grant extra models. An empty `models` already means "all models", so the group never restricts anything. The `access_group_ids` fallback path (`_key_access_group_grants_model`) is also only reached inside a team denial branch
There is also a related "blocks all usage" symptom. If the access group name ends up in a…