mirror of
https://github.com/coder/coder.git
synced 2026-06-03 13:08:25 +00:00
bb97ba727f
## Problem Non-admin users of the Agents (chat) feature send `model_config_id: "00000000-0000-0000-0000-000000000000"` (nil UUID) when creating chats, because the `GET /api/experimental/chats/model-configs` endpoint requires `policy.ActionRead` on `rbac.ResourceDeploymentConfig`, which is only granted to admins. The flow: 1. `AgentsPage.tsx` calls `useQuery(chatModelConfigs())` → hits `listChatModelConfigs` 2. Non-admin users get a **403 Forbidden** response 3. `chatModelConfigsQuery.data` is `undefined`, so the `modelConfigIDByModelID` map is empty 4. `handleCreateChat` falls back to `nilUUID` for `model_config_id` 5. The backend rejects the nil UUID: `"Invalid model config ID."` ## Fix Changed `listChatModelConfigs` to allow all authenticated users to read model configs: - **Admin users** continue to see all configs (including disabled ones) for management via `GetChatModelConfigs` - **Non-admin users** now see only enabled configs via `GetEnabledChatModelConfigs` with a system context, which is sufficient for using the chat feature This follows the same pattern as `listChatModels`, which already uses `dbauthz.AsSystemRestricted(ctx)` to allow all authenticated users to see available models. Write endpoints (create/update/delete) retain their existing `ResourceDeploymentConfig` authorization. ## Testing - Updated `TestListChatModelConfigs/ForbiddenForOrganizationMember` → `SuccessForOrganizationMember` to verify non-admin users can list enabled model configs - All existing chat tests continue to pass