Skip to content

Settings save fails — permission denied on config/llm-config.json in container #32

@mriechers

Description

@mriechers

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:

  1. Volume mount ownership — The host directory is owned by the host user, but the container runs as a different UID
  2. 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
  3. 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, chown the config directory to the app user after COPY
  • 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

  1. Navigate to Settings page
  2. Change any agent tier dropdown (e.g., Formatter from "cheapskate" to "big-brain")
  3. Click "Save Changes"
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    executor: agentBest suited for AI agent executionpriority: highBlocking other work or user-reportedtype: bugSomething is not working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions