[FEATURE] remote-control: --effort for spawned sessions, like --permission-mode

Status Open
Reported on v2.1.281
Maintainer reply None cached
Activity 0 comments · opened Oct 8, 2026

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_LEVEL in 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:

  1. Add "CLAUDE_CODE_EFFORT_LEVEL": "max" to the env block of ~/.claude/settings.json.
  2. Run claude remote-control --permission-mode bypassPermissions.
  3. From the desktop app, start a new session on that environment without touching the selectors. They show "Extra" and "Accept edits".
  4. Once the session starts, the mode selector switches to "Bypass permissions", but the effort selector stays on "Extra". echo $CLAUDE_EFFORT inside the session prints max.

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).

View original on GitHub ↗