Motivation
A runner with no model/effort override runs on whatever the CLI's own config says — and Runner never shows what that is. Settings → Agents lists each runtime's detected executable, but "default" is opaque: you can't tell from inside the app which model a bare claude or codex spawn will actually use, or at what reasoning effort. Surfacing it makes the runner-create flow honest (leaving model blank means this) and helps debugging ("why is this crew slow/dumb" → it's on the wrong default).
Feasibility
Cheap — the config locations are already known to the app (commands/mcp.rs path helpers):
- codex:
~/.codex/config.toml — model, model_reasoning_effort.
- trae:
~/.trae/traecli.toml — same codex-fork keys (verified in impl 0036 probing).
- claude-code:
~/.claude/settings.json — model; effort concept differs (claude has no persistent effort key in settings — show — or the CLI default).
- qoder:
~/.qoder/settings.json — whatever model key it carries (probe like 0034/0036 did).
Reads are per-open of the Settings pane (no watching needed); absent file/key renders as "runtime default" rather than guessing.
Scope sketch
- Settings → Agents: each runtime row gains a line/badge like
default: opus-4.7 · — / default: gpt-5-codex · high, read live from the runtime's own config file.
- Runner create/edit: the model/effort placeholders show the resolved default (e.g.
default (gpt-5-codex)) instead of a bare "default".
- Read-only — Runner never writes these configs (consistent with the MCP registration posture: only
mcp_servers.runner is ever touched).
To be decided
- Whether the per-runner card on the Runners list also shows the resolved effective model when no override is set.
- Claude effort display: omit vs show the session default.
Relevant code
src-tauri/src/runtime_status.rs — status_list, the Settings → Agents row source.
src-tauri/src/commands/mcp.rs:93-101 — existing per-runtime config path helpers to reuse.
src-tauri/src/router/runtime.rs — model_effort_args (how overrides are passed today, for naming consistency).
Spec: to be written when picked up (issue-only for now, per triage).
Motivation
A runner with no model/effort override runs on whatever the CLI's own config says — and Runner never shows what that is. Settings → Agents lists each runtime's detected executable, but "default" is opaque: you can't tell from inside the app which model a bare
claudeorcodexspawn will actually use, or at what reasoning effort. Surfacing it makes the runner-create flow honest (leaving model blank means this) and helps debugging ("why is this crew slow/dumb" → it's on the wrong default).Feasibility
Cheap — the config locations are already known to the app (
commands/mcp.rspath helpers):~/.codex/config.toml—model,model_reasoning_effort.~/.trae/traecli.toml— same codex-fork keys (verified in impl 0036 probing).~/.claude/settings.json—model; effort concept differs (claude has no persistent effort key in settings — show—or the CLI default).~/.qoder/settings.json— whatever model key it carries (probe like 0034/0036 did).Reads are per-open of the Settings pane (no watching needed); absent file/key renders as "runtime default" rather than guessing.
Scope sketch
default: opus-4.7 · —/default: gpt-5-codex · high, read live from the runtime's own config file.default (gpt-5-codex)) instead of a bare "default".mcp_servers.runneris ever touched).To be decided
Relevant code
src-tauri/src/runtime_status.rs—status_list, the Settings → Agents row source.src-tauri/src/commands/mcp.rs:93-101— existing per-runtime config path helpers to reuse.src-tauri/src/router/runtime.rs—model_effort_args(how overrides are passed today, for naming consistency).Spec: to be written when picked up (issue-only for now, per triage).