-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Bug Report
Page: Settings → Agent Base Tiers (and likely all Settings sub-tabs)
Trigger: Clicking "Save Changes" after modifying any setting
Severity: High — settings are read-only in practice; no configuration changes persist
Observed Behavior
The Settings page loads correctly and displays all agent configuration:
- Agents tab showing Agent Base Tiers (Analyst, Formatter, SEO Specialist, QA Manager, Copy Editor) with their model tier dropdowns (big-brain, cheapskate)
- Sub-tabs for Routing, Worker, Ingest, System, Accessibility all visible
On save attempt, a red error banner appears at the top of the page:
Failed to save config: [Errno 13] Permission denied: 'config/llm-config.json'
Expected Behavior
- Settings save successfully and persist across container restarts
- Config file is writable by the API process inside the container
Root Cause
This is a Docker file permissions issue. The config/ directory (or specifically llm-config.json) is mounted or copied into the container with permissions that don't allow the API process to write to it. Common causes:
- Volume mount ownership — The host directory is owned by the host user, but the container runs as a different UID
- COPY in Dockerfile — If the config is
COPYed in at build time, it may be owned by root while the app runs as a non-root user - Read-only mount — The volume may be mounted as
:ro(read-only)
Fix Direction
- Ensure the
config/directory is writable by the container's app user - In the Dockerfile,
chownthe config directory to the app user afterCOPY - Or mount it as a named volume with appropriate permissions
- Consider: should config changes persist via volume mount, or should there be a separate writable config location (e.g., in the SQLite database)?
Steps to Reproduce
- Navigate to Settings page
- Change any agent tier dropdown (e.g., Formatter from "cheapskate" to "big-brain")
- Click "Save Changes"
- Observe red error banner:
Permission denied: 'config/llm-config.json'
Screenshot
Settings page with Agents tab active, showing all five agent roles with tier dropdowns. Red error banner at top indicates permission denied on config file save. The page renders and loads config correctly — only writing back fails.