Daemon-hosted session forks pin --effort from cached session state, ignoring settings.json changes

Open 💬 0 comments Opened Jul 3, 2026 by marketechniks

Description

When a session runs through the background daemon (claude daemon--bg-pty-hostclaude --fork-session --resume ... --effort <level>), the effort level passed to forks comes from the daemon's cached per-session state. There is no way to change a running session's effort level in this topology — the documented startup-time mechanisms don't reach it.

Repro (Windows 11, claude CLI via daemon / remote control)

  1. Session running via daemon lane; fork command line shows --effort medium.
  2. Edit ~/.claude/settings.json"effortLevel": "low".
  3. Send a new prompt: same long-lived fork process handles it (expected — settings are documented as startup-only).
  4. Force-kill the fork process. The daemon respawns a fresh fork for the session.
  5. Observed: the new fork launches with --effort medium — the daemon's cached value, not the updated settings value.
  6. Expected (requested): freshly spawned forks re-read effortLevel (and ideally model) from settings, or a supported command exists to update a daemon session's effort/model.

Verified by walking process ancestry (Win32_Process command lines) before and after each step.

Why it matters

/effort and /model handle interactive terminal sessions, and a restart wrapper can relaunch claude --continue --effort X for the terminal lane. But daemon-hosted sessions (remote control, background jobs) have no equivalent — effort is effectively immutable for the session's lifetime. Re-reading settings at fork spawn would make effort adjustable with zero new surface area; alternatively a claude agents-style per-session override would do it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01S5VBktxtqvXTS6xKC8RfD3

View original on GitHub ↗