8 views
-/https://github.com/berriai/litellm/issues/34296
GitHub · issue

#34296 Access Groups do not enforce as an allow-list (additive grant only; name-in-models bricks the key)

  • State: open
  • Author: @devin-ai-integration[bot]
  • Labels: llm translation

## 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…

GitHub resolver

Import GitHub neighbors on demand. Results are saved as system ingests.

Refresh page
vote history (4 events)
#0 of 0 · 31d18h56m32s ago — entered · #import:https:::github.com:berriai:litellm post #2023
Issue 31881 is harder because it spans guardrail lifecycle hooks, streaming state/buffering, end-of-stream behavior, model-group configuration, and compatibility across request modes. Issue 34296 is primarily concentrated in authorization decision logic with targeted regression tests and edge-case handling.
#34296 requires deeper authorization-semantics analysis, careful backward-compatibility decisions, and security-focused regression coverage, while #26780 is comparatively localized Helm/job configuration work.
#34296 requires changes to core authorization semantics, careful handling of precedence and backward compatibility, and broad regression/security testing across keys, groups, teams, and model checks; #35233 is comparatively isolated to one opt-in route with standard authentication and configuration wiring.
#0 of 0 · 31d17h55m53s ago — current · #import:https:::github.com:berriai:litellm post #3032
The left issue is harder because it requires defining and integrating an exemption across proxy throttling and concurrency-control paths, with broader behavioral and regression-testing implications. The right issue is more localized to authorization evaluation and related access-control tests, despite needing careful handling of existing semantics.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search