From 221ac8124dd89c16d8858c552081e148d2d5526f Mon Sep 17 00:00:00 2001 From: intech Date: Sat, 13 Jun 2026 17:28:58 +0400 Subject: [PATCH] fix: statusLine in settings.json, suppress fullscreen prompt, silence auto-update warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From live-session feedback (auto mode + advisor confirmed working): - statusLine was in settings.local.json and didn't render. Per the docs, Claude Code reads `statusLine` from ~/.claude/settings.json (user settings) — moved it there; removed it from settings.local.json. - "Try the new fullscreen renderer?" prompt kept reappearing ("Not now" is only a per-session decline). Set `"tui": "default"` in settings.json to pick the classic renderer explicitly and suppress the prompt (verified against docs/en/fullscreen). - "No write permissions for auto-updates" setup warning: added `"autoUpdates": false` to settings.json (alongside the existing env DISABLE_AUTOUPDATER=1). Validated on the local build (amd64): baked ~/.claude/settings.json carries defaultMode=auto, advisorModel=opus, autoUpdates=false, tui=default, and the statusLine command — all survive the RTK/caveman settings-merge during build; settings.local.json no longer has statusLine. NOT verifiable headless (TUI-only, user-confirmable): that the status line now renders and the fullscreen prompt no longer appears. "Found invalid entries in: ." points at the project dir (cwd) — run `/doctor` in that project to see which file/keys; it is not in the baked image config. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 8 ++++---- settings.json | 9 ++++++++- settings.local.json | 5 ----- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 65a4562..ee507cb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -45,8 +45,8 @@ The container implements defense-in-depth: Claude Code configuration is pre-configured in the container: - `claude-config.json` - Main Claude configuration with all permissions enabled -- `settings.local.json` - Local settings copied to `~/.claude/settings.local.json` (statusLine + permissions) -- `settings.json` - User settings copied to `~/.claude/settings.json`: `permissions.defaultMode: "auto"` + `advisorModel: "opus"` (auto mode must be in user-home, not project scope) +- `settings.local.json` - Local settings copied to `~/.claude/settings.local.json` (permissions allow/deny/ask) +- `settings.json` - User settings copied to `~/.claude/settings.json`: `permissions.defaultMode: "auto"`, `advisorModel: "opus"`, `autoUpdates: false`, `tui: "default"` (suppresses the fullscreen-renderer prompt), and the `statusLine` (must be in settings.json, not settings.local.json — that's where Claude Code reads it). Auto mode must be in user-home, not project scope - All permissions are auto-accepted for jailfree operation mode ## Common Commands @@ -399,8 +399,8 @@ Inside the debug shell, you can run diagnostics manually: - `tools/package.json` - Pinned npm CLI toolchain (claude-code, openspec, codegraph, caveman-shrink, MCP servers, dev tools) — exact versions, single source of truth - `tools/package-lock.json` - Lockfile (sha512 integrity) for the toolchain; installed via `npm ci`. Regenerate inside node:22 after editing package.json - `claude-config.json` - Claude Code configuration with all permissions -- `settings.local.json` - Local Claude settings; also wires the `statusLine` to `/usr/local/bin/claude-statusline.sh` -- `settings.json` - User Claude settings baked to `~/.claude/settings.json`: `permissions.defaultMode: "auto"` + `advisorModel: "opus"` +- `settings.local.json` - Local Claude settings (permissions allow/deny/ask) +- `settings.json` - User Claude settings baked to `~/.claude/settings.json`: `permissions.defaultMode: "auto"`, `advisorModel: "opus"`, `autoUpdates: false`, `tui: "default"`, and the `statusLine` (wired to `/usr/local/bin/claude-statusline.sh`) - `statusline-command.sh` - Claude Code statusLine script (compact line: dir, git branch/dirty, model, duration, context %, 5h/7d rate limits); baked to `/usr/local/bin/claude-statusline.sh` (fixed, HOME-independent path). Deps (jq, git, awk, date, grep) are all present in the image - `mcp-servers.json` - Base MCP server configurations (always installed) - `mcp-servers-optional.json` - Optional MCP servers (require API keys) diff --git a/settings.json b/settings.json index 7191017..a245694 100644 --- a/settings.json +++ b/settings.json @@ -2,5 +2,12 @@ "permissions": { "defaultMode": "auto" }, - "advisorModel": "opus" + "advisorModel": "opus", + "autoUpdates": false, + "tui": "default", + "statusLine": { + "type": "command", + "command": "/usr/local/bin/claude-statusline.sh", + "padding": 0 + } } diff --git a/settings.local.json b/settings.local.json index e29fda7..fbe3c20 100644 --- a/settings.local.json +++ b/settings.local.json @@ -3,10 +3,5 @@ "allow": [], "deny": [], "ask": [] - }, - "statusLine": { - "type": "command", - "command": "/usr/local/bin/claude-statusline.sh", - "padding": 0 } }