[FEATURE] remote-control: --effort for spawned sessions, like --permission-mode
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
claude remote-control can set the permission mode of the sessions it spawns (--permission-mode). Each spawned session reports its mode back, so the app's selector updates on its own: it shows "Accept edits" while composing and switches to "Bypass permissions" once the session starts.
There's no equivalent for effort. Each spawned session gets --effort from the app's selector, and the desktop app starts every new session on "Extra" (xhigh). To run at a different effort, you have to change the selector before every new session.
The only way to force an effort today is to set CLAUDE_CODE_EFFORT_LEVEL in the env block of ~/.claude/settings.json. That works: a session spawned with --effort xhigh runs at max. Inside it, $CLAUDE_EFFORT is max and the transcript records "effort":"max" on every assistant message. But while the variable is set:
- the session doesn't report its effort to the app, so the app keeps showing "Extra" for a session that runs at Max;
- the CLI rejects effort changes coming from the app (
apply_flag_settings: CLAUDE_CODE_EFFORT_LEVEL overrides effort for this session).
So the UI shows an effort the session isn't using.
effortLevel in settings isn't a way out either: it doesn't accept max.
Proposed Solution
Add --effort <level> to claude remote-control, with the same semantics as --permission-mode:
- it sets the effort of every session the daemon spawns, at spawn time;
- the session reports it back, so the app's selector shows the effort that is actually running, as it already does for the permission mode;
- the user can still change the effort of a single session from the app afterwards.
Alternative Solutions
- Keep
CLAUDE_CODE_EFFORT_LEVELin settings, but when it overrides the effort, report the effective value (e.g.max) to the app, so at least the selector shows the truth. - Have the app remember the last effort per Remote Control environment, as requested in #79363 (closed as stale).
Priority
Medium - Would be very helpful
Feature Category
CLI commands and flags
Use Case Example
I run three claude remote-control daemons under launchd, one per workspace, each with --permission-mode bypassPermissions --spawn same-dir, and drive them from the desktop and mobile apps. Every session should run at Max. With --effort max on the daemon, each new session would start at Max and the app would show Max, with no per-session setup.
Additional Context
Steps to reproduce the current behavior:
- Add
"CLAUDE_CODE_EFFORT_LEVEL": "max"to theenvblock of~/.claude/settings.json. - Run
claude remote-control --permission-mode bypassPermissions. - From the desktop app, start a new session on that environment without touching the selectors. They show "Extra" and "Accept edits".
- Once the session starts, the mode selector switches to "Bypass permissions", but the effort selector stays on "Extra".
echo $CLAUDE_EFFORTinside the session printsmax.
The spawned child gets --permission-mode bypassPermissions from the daemon and --model claude-opus-5-5 --effort xhigh from the app. claude remote-control --help lists --permission-mode <mode> Permission mode for spawned sessions and nothing for effort.
Environment: Claude Code 2.1.281 on macOS, Claude desktop app 2.26454.2.
Related: #79363 (Remote Control defaults to Extra with no way to set a default), #98171 (the effort label differs between clients for the same session).