Remote Control bridge sessions ignore the selected model (app picker and trigger session_context.model) — always run the Fable default
Summary
Sessions dispatched to a Remote Control (bridge) environment — whether started from the Claude iOS app / claude.ai with a model picked in the UI, or fired from a routine created via POST /v1/code/triggers with job_config.ccr.session_context.model set — do not honor the requested model. The session silently runs the account's default model (Fable 5) instead. The failure is invisible: the client UI shows the selected model as active. Running /model inside the session works, so only the initial model selection is lost.
On an account whose Fable weekly cap is exhausted, this makes every new Remote Control session dead on arrival: it immediately fails with "You're out of usage credits. Run /usage-credits to keep using Fable 5 or /model to switch models" even though the user explicitly selected Opus. Scheduled routines targeting the environment cannot run at all until the cap resets (each scheduled run and automatic retry dies the same way).
Reproduction (verified on daemon versions 2.1.224 AND 2.1.226, 2026-08-09)
- Run
claude remote-control --permission-mode bypassPermissions --no-create-session-in-diron a Linux host (Ubuntu LXC) as a systemd user service, logged in via claude.ai OAuth (Max plan). - Create a trigger:
POST /v1/code/triggerswithjob_config.ccr.environment_id= the bridge environment andsession_context: {"model": "claude-opus-5", "allowed_tools": ["Bash", "Read"]}; event message:Reply with exactly one line: MODELTEST <the exact model id you are running as>. - Fire it:
POST /v1/code/triggers/{id}/run. - The session executes on the daemon host. Every assistant message in the transcript has
"model": "claude-fable-5", and the session replies:MODELTEST claude-fable-5.
Expected: the session runs claude-opus-5. Actual: claude-fable-5. Repeated after upgrading the daemon to 2.1.226 — identical result.
The same happens for interactive sessions from the iOS app (1.260721.0): model picker set to Opus 5 before starting the session, session still runs Fable 5 (observed via the usage-credits error on a Fable-capped account, and by asking the session which model it runs).
Real-world impact observed
A daily scheduled routine configured with session_context.model: claude-opus-5 since creation failed for three consecutive days on a Fable-capped account: every cron firing and automatic retry produced a session that died instantly on the Fable usage wall, confirmed by the daemon's session list showing repeated dead runs. The stored trigger config confirms Opus was requested the entire time.
Related open reports (this issue adds the trigger-API session_context.model path, Linux server-mode daemons, and a negative test on 2.1.226): #82112, #75272, #84225, #83472 (promptSource=queued observation), #83560 (model_update_disabled on trigger model updates), and stale-closed #66666 / #65373.
Environment
- Daemon: Claude Code 2.1.224 and 2.1.226, Ubuntu LXC (systemd user service), claude.ai subscription OAuth (Max plan)
- Clients: Claude iOS app 1.260721.0;
/v1/code/triggersAPI
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗