{"version":"2.1.234","anchor":"remote-control-can-read-and-change-the-session-s-effort-leve","canonical_anchor":"remote-control-can-read-and-change-the-session-s-effort-leve","heading":"Remote Control can read and change the session's effort level and ultracode","tier":"notice","area":"Remote Control","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234\/e\/remote-control-can-read-and-change-the-session-s-effort-leve","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234","markdown":"### Remote Control can read and change the session's effort level and ultracode\n\nA remote client driving your session can now see and change effort level and toggle ultracode.\n\n**What**\n\nA Remote Control client, the remote peer driving a Claude Code session over the bridge connection, now sees the session's effort level in the connection handshake and can change it. A new `apply_flag_settings` request sets the effort level or toggles ultracode, and the CLI pushes the current effort back to the peer whenever it changes, so both ends stay in agreement without the client having to poll.\n\n**Details**\n\n- The handshake payload carries `effort`, the level the session will actually send on its next request once environment overrides, organisation caps and model downgrades are applied; it is one of low, medium, high, xhigh, max, or null.\n- That handshake `effort` is the same value `get_settings` reports as `applied.effort`.\n- `apply_flag_settings` accepts exactly two fields, `effortLevel` (string or null) and `ultracode` (boolean); anything else is refused with `apply_flag_settings: nothing to apply \u2014 only effortLevel and ultracode can be changed over Remote Control`.\n- Setting the `CLAUDE_CODE_EFFORT_LEVEL` environment variable pins effort for the whole session and blocks any remote change, refused with `apply_flag_settings: CLAUDE_CODE_EFFORT_LEVEL overrides effort for this session`.\n- In a build or context where no handler is wired up, the request fails with `apply_flag_settings is not supported in this context (onApplyFlagSettings callback not registered)`.\n- Refusals are counted under the `bridge_flag_settings` metric with distinct reasons: `disabled`, `invalid_effort_level`, `env_override`, `ultracode_unavailable`, `invalid_shape`, `unsupported_key`, `invalid_type`, `nothing_to_apply`, `not_registered`.\n- Effort is reported back as `effort_level` metadata on model switch, effort change, session-model change, turn end and state change, and is deduplicated against the last value already sent.\n- The same schema change also adds `saw_cyber_refusal`, an internal flag set on refusal banners, which is not part of the effort or ultracode controls.\n\n**Evidence**\n\n`apply_flag_settings: CLAUDE_CODE_EFFORT_LEVEL overrides effort for this session`, `apply_flag_settings: nothing to apply \u2014 only effortLevel and ultracode can be changed over Remote Control`, `apply_flag_settings is not supported in this context (onApplyFlagSettings callback not registered)`, `the same value get_settings reports as applied.effort`\n\n- Area: Remote Control\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 3\/5"}