Why it happens
A team carries ateam_member_permissions list naming the key-management routes its members may call. Members always get a baseline of /key/info and /key/health, and nothing else unless you add it
A team created without that list ends up with [], which means explicitly nothing, so members fall back to the baseline. /key/generate is not in it
The error message is accurate. It just does not say where to go, which is why people usually meet this problem twice before finding the setting
Granting it
- Dashboard
- API
Open the team, go to the Member Permissions tab, and tick the routes members should have. It sits on the team’s own page, beside Members and Settings
Choosing a grant
The full list of available routes comes back from
/team/permissions_list, and includes spend and activity routes as well as key routes
What isolation you get
The grant is per team, but ownership is enforced per user underneath it. With the “own keys, full lifecycle” grant above and two members in one team:Granting the team does not let members reach each other’s keys. Listing is scoped to the caller, and creation, deletion and modification all check ownership. Proxy admins bypass those checks, which is what lets an admin clean up after anyone
One caveat worth knowing
/key/info grants read access to any member of the key’s team, so a member holding another member’s raw key string can read that key’s metadata
This is not a discovery path. The lookup is by the key value itself, and no listing call will surface another member’s keys, as the table above shows. Anyone holding someone else’s secret can already use it to make billed calls, which is worse than reading its budget and model list. Treat it as one more reason not to share key strings, rather than as a way for members to inspect each other
Defaults for new teams
Granting one team changes only that team. A team created afterwards starts at the baseline againTroubleshooting
The member still gets the permission error after the grant
The member still gets the permission error after the grant
Confirm it saved by reading
/team/permissions_list back. Check you granted the team they are actually creating the key under, and that they picked that team in the Key Ownership dialogThe member can create a key but the list is empty
The member can create a key but the list is empty
/key/list was not granted. Add itThe member cannot see the team in the create-key dialog
The member cannot see the team in the create-key dialog
That is team membership, not key permissions. Check they are listed under the team’s Members tab
An admin needs to delete a member's key
An admin needs to delete a member's key
Proxy admins bypass the ownership check and can delete any key, with no grant required