Repository navigation
Description
Summary
Thinking effort for Claude Code agents can only be set globally. Every Claude-harness agent on a machine inherits the same value, so a fleet cannot be tuned per agent — a cheap mechanical agent and an architecture agent must run at the same effort.
The value in effect comes from CLAUDE_CODE_EFFORT_LEVEL in ~/.claude/settings.json (user scope). Buzz Desktop's agent config panel exposes a "Thinking effort" field per agent, which makes it look per-agent, but the value it reads and writes is the shared user-level one.
Measured on Buzz Desktop with two Claude Code agents running side by side on Windows 11:
~/.claude/settings.json → { "env": { "CLAUDE_CODE_EFFORT_LEVEL": "medium" } }
Both agents' session transcripts report "effort":"medium" — changing it for one changed it for both.
Why this matters (numbers from one night of a 5-agent fleet)
Agents in the same fleet have wildly different cost profiles. One hour, measured per agent from session transcripts:
| Agent | Runtime | Model | Tokens (output) | Turns |
|---|---|---|---|---|
| A (web screens) | claude | opus | 206.5M (222k) | 374 |
| B (PM/coordination) | claude | opus | 53.6M (128k) | 212 |
| C (server) | codex | gpt-5.6-sol | 2.5M (8k) | — |
Agent A burned ~11× the entire Codex side of the fleet. The obvious lever — drop A to a lower effort while leaving the architecture agent high — is not available, because effort is one global switch.
The workaround today is editing ~/.claude/settings.json and restarting, which changes every Claude agent at once.
Request
Per-agent thinking effort, applied at spawn:
- Store effort on the agent record (like model), not only in user-scope settings.
- Inject it into the spawned session (e.g.
CLAUDE_CODE_EFFORT_LEVELin the agent's env) so agents on one machine can differ. - Keep the user-level value as the default when the agent doesn't override it.
- Surface the effective value per agent (see observability note below), so it can be verified rather than assumed.
Related
- fix(desktop): agent config panel ignores project-level Claude settings #5826 — the agent config panel reads Claude settings only from
~/.claude/settings.jsonand ignores project-level settings. Same surface, different defect: that one is about which file is displayed, this one is about effort having no per-agent scope at all. - [Bug] Claude Code agents ignore the model set in Buzz Desktop — model picker persists but nothing applies it at spawn #2692 — Claude Code agents ignore the model set in Desktop and fall back to the global default. Effort has the same shape of problem: fleet-wide value, no per-agent override.
Verifying the effective value
There is currently no way to read back what a running agent is actually using. We had to parse ~/.claude/projects/**/*.jsonl for "model" and "effort" to find out — and to attribute a transcript to an agent at all, we had to infer identity from Nostr pubkeys in mention tags (the owner's pubkey appears in p tags but never as the message sender). A buzz agents list showing runtime / model / effort / last activity per agent would make this observable instead of reverse-engineered.
Activity