Skip to content

Show what Auto effort resolves to in the agents frame - #390

Merged
charlie-ps merged 1 commit into
mainfrom
auto-effort-in-agents-frame
Oct 28, 2026
Merged

charlie-ps merged 1 commit into
mainfrom
auto-effort-in-agents-frame

Conversation

@charlie-ps

Copy link
Copy Markdown
Contributor

A launch with effort "Auto" passes no --effort or model_reasoning_effort, so the agent picks its own level. The agents frame did not say which level that is, so an extension's model picker could not place Auto anywhere.

  • Each model in the agents frame, and in the client api.agents(), has an optional autoEffort: the level the agent runs that model at when no effort is passed. It is left out when unknown.
  • Claude: resolved in Claude Code's documented order using static reads only.
    • CLAUDE_CODE_EFFORT_LEVEL from a settings env block. Launches strip it from the shell environment, so a shell export does not count.
    • Managed settings: server-managed remote-settings.json, the MDM plist, then managed-settings.json with its managed-settings.d/ drop-ins. The first source with a policy key wins, unless it opts into merge.
    • User settings. A modelSettings entry beats the top-level effortLevel. The top-level key in user settings only reaches models older than Opus 5.5.
    • The model's documented default: medium for Opus, Sonnet and Haiku 5.5, xhigh for Opus 4.7, high otherwise.
    • The lowest maxEffortLevel cap from any source then applies.
  • Codex: the top-level model_reasoning_effort in config.toml, then the model's default_reasoning_level from codex debug models. That level is now kept in the catalog and the bundled snapshot.
  • The frame is re-sent when a source file changes (a stat poll every 15s; files are re-read only when their mtime or size moves) and on a catalog refresh.
  • Host API 1.49.0 documents autoEffort.

Validation:

  • New server/agents/auto-effort.test.js and a codex-catalog.test.js case. Full npm test: 4,659 passed. npm run docs:check passed.
  • On an isolated dev board, the agents frame showed opus medium, fable high, and each Codex model at config.toml's level. That matches the effort recorded in 478 earlier Auto-effort Opus transcripts.

Made with Agent Wrangler and the PortSwigger/wrangler-squared extension

A launch with effort "Auto" passes no `--effort` or `model_reasoning_effort`, so the agent picks its own level. The agents frame did not say which level that is, so an extension's model picker could not place Auto anywhere.

- Each model in the `agents` frame, and in the client `api.agents()`, has an optional `autoEffort`: the level the agent runs that model at when no effort is passed. It is left out when unknown.
- Claude: resolved in Claude Code's documented order using static reads only.
  - `CLAUDE_CODE_EFFORT_LEVEL` from a settings `env` block. Launches strip it from the shell environment, so a shell export does not count.
  - Managed settings: server-managed `remote-settings.json`, the MDM plist, then `managed-settings.json` with its `managed-settings.d/` drop-ins. The first source with a policy key wins, unless it opts into `merge`.
  - User settings. A `modelSettings` entry beats the top-level `effortLevel`. The top-level key in user settings only reaches models older than Opus 5.5.
  - The model's documented default: medium for Opus, Sonnet and Haiku 5.5, xhigh for Opus 4.7, high otherwise.
  - The lowest `maxEffortLevel` cap from any source then applies.
- Codex: the top-level `model_reasoning_effort` in `config.toml`, then the model's `default_reasoning_level` from `codex debug models`. That level is now kept in the catalog and the bundled snapshot.
- The frame is re-sent when a source file changes (a stat poll every 15s; files are re-read only when their mtime or size moves) and on a catalog refresh.
- Host API 1.49.0 documents `autoEffort`.

Validation:
- New `server/agents/auto-effort.test.js` and a `codex-catalog.test.js` case. Full `npm test`: 4,659 passed. `npm run docs:check` passed.
- On an isolated dev board, the `agents` frame showed opus `medium`, fable `high`, and each Codex model at `config.toml`'s level. That matches the effort recorded in 478 earlier Auto-effort Opus transcripts.

Made with Agent Wrangler and the PortSwigger/wrangler-squared extension
@charlie-ps
charlie-ps merged commit f8607ae into main Oct 28, 2026
2 checks passed
@charlie-ps
charlie-ps deleted the auto-effort-in-agents-frame branch October 28, 2026 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant