{"record":{"id":"2898638583c11a46","repo":"BerriAI/litellm","slug":"only-proxy-admins-can-update-ui-settings","errorCode":null,"errorMessage":"Only proxy admins can update UI settings.","messagePattern":"Only proxy admins can update UI settings\\.","errorType":"http","errorClass":"HTTPException","httpStatus":403,"severity":"error","filePath":"litellm/proxy/ui_crud_endpoints/proxy_setting_endpoints.py","lineNumber":1431,"sourceCode":"    tags=[\"UI Settings\"],\n    dependencies=[Depends(user_api_key_auth)],\n)\nasync def update_ui_settings(\n    settings_body: dict[str, object] = Body(...),\n    user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),\n):\n    \"\"\"\n    Update UI-specific configuration flags.\n    Only proxy admins are allowed to modify these settings.\n    \"\"\"\n    from litellm.proxy.proxy_server import (\n        create_config_audit_log,\n        prisma_client,\n        store_model_in_db,\n    )\n\n    if user_api_key_dict.user_role != LitellmUserRoles.PROXY_ADMIN:\n        raise HTTPException(status_code=403, detail=\"Only proxy admins can update UI settings.\")\n\n    if prisma_client is None:\n        raise HTTPException(\n            status_code=500,\n            detail={\"error\": \"Database not connected. Please connect a database.\"},\n        )\n\n    if store_model_in_db is not True:\n        raise HTTPException(\n            status_code=500,\n            detail={\"error\": \"Set `'STORE_MODEL_IN_DB='True'` in your env to enable this feature.\"},\n        )\n\n    conflicting_keys: Final = sorted(\n        key\n        for key, value in settings_body.items()\n        if key in _DERIVED_UI_SETTINGS_FIELDS and value != _derived_ui_setting_value(key)\n    )","sourceCodeStart":1413,"sourceCodeEnd":1449,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/ui_crud_endpoints/proxy_setting_endpoints.py#L1413-L1449","documentation":"Role gate on PATCH /update/ui_settings: the caller's user_role is not PROXY_ADMIN. UI configuration flags are proxy-wide admin concerns, so non-admin keys are rejected with 403 before any body parsing or persistence happens.","triggerScenarios":"Thrown at litellm/proxy/ui_crud_endpoints/proxy_setting_endpoints.py:1431 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a proxy admin key to update UI settings."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}