feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(orchestrator): Surface Grok reasoning effort options - #5160

Closed
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort
Closed

feat(orchestrator): Surface Grok reasoning effort options#5160
mwolson wants to merge 7 commits into
pingdotgg:t3code/codex-turn-mappingfrom
mwolson:feat/grok-reasoning-effort

Conversation

@mwolson

@mwolsonmwolson commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Reasoning selector for Grok models that advertise effort support, using
    each model's ACP menu (Grok 4.5: Low / Medium / High; Grok 4.6 also includes
    Extra High).
  • Require Grok 1.0.0 or newer and apply model and reasoning changes in the
    active conversation through ACP session/set_model metadata.
  • Keep the active model and reasoning metadata synchronized across new, loaded,
    resumed, and restarted ACP sessions, including first-party text generation.
  • When a model advertises more than one default, keep a single Default badge and
    prefer the advertised current effort.

Problem and Fix

Problem and Why it HappenedFix
T3 Code did not surface Grok's advertised reasoning-effort choices, so every turn used the provider default.Map ACP model reasoning metadata into the existing provider-option UI on web and mobile.
Grok 1.0.0 honors reasoning effort in session/set_model metadata, while the generic ACP adapter previously treated model selection as only a model-id change.Compare both the model id and normalized { reasoningEffort } metadata so the next turn can apply either change in the same conversation.
Loading or resuming a provider session can replace the model state discovered when the process initialized.Record the active model and metadata after every session activation, then reapply the requested selection when necessary.
An older Grok binary can accept process launch but ignore the dynamic reasoning metadata.Parse the complete Grok CLI version, including prerelease suffixes, and gate orchestration and first-party text generation on Grok 1.0.0 or newer.
Grok 4.6's catalog marks Extra High and High as default: true, so the picker showed two Default badges.Collapse multiple advertised defaults to one and prefer the advertised current effort.

Defensive Fixes

Problem and Why it HappenedFix
Provider metadata can be absent or malformed, and persisted selections can drift from a model's current advertised menu.Fall back only when the effort menu is absent, reject malformed-present metadata, preserve future valid advertised values, and normalize stale values to the model's advertised default.
Clearing reasoning metadata is also a state change, but a one-sided comparison can miss the transition from a defined effort to no explicit effort.Compare the current and requested metadata symmetrically and cover clearing and reapplying effort on the same model.

UI Changes

After: Grok models with reasoning support expose their advertised choices in
the composer. Grok 4.6 shows Extra High when that is the advertised current
effort, with a single Default badge in the open menu.

Grok 4.6 Reasoning menu with Extra High Default

Grok 4.6 composer with Extra High menu open

A video is not applicable because this change has no animation or timing
behavior.

Validation

  • A live Grok ACP probe changed an active session to Low, completed a real
    prompt, loaded the same session in a fresh runtime, and read Low back from
    the advertised model metadata. Grok's durable session history recorded
    "reasoning_effort":"low" on those assistant messages.
  • A later live Grok 4.6 thread changed mid-conversation from High to Extra
    High. Subsequent assistant messages recorded "reasoning_effort":"xhigh".
  • After collapsing duplicate advertised defaults, a Nightly AppImage on
    Grok 4.6 shows Extra High selected and a single Default badge on Extra High.
  • Focused Grok provider tests cover advertised menus, the Grok 4.6 dual-default
    catalog, and Extra High as the current effort.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included after screenshots for UI changes
  • A video is not applicable because there are no animation or timing changes

Note

Surface Grok reasoning effort as a spawn-bound option in the orchestrator and UI

  • Adds GROK_REASONING_EFFORT_OPTION_ID and supporting utilities in GrokAcpSupport.ts to resolve and pass --reasoning-effort as a CLI flag when spawning the Grok agent process.
  • Extends the ACP adapter in AcpAdapterV2.ts to support spawnOptionIds on flavors, excluding those options from ACP config validation and setConfigOption calls, and logging a warning on mismatch.
  • Updates GrokProvider.ts to parse reasoning effort menus from ACP model _meta and advertise a Reasoning select capability on discovered Grok models, with a fallback for grok-4.5.
  • Blocks option changes mid-thread on both web (ChatComposer.tsx) and mobile (ThreadComposer.tsx) when the active provider requires a new thread for model changes, showing a warning toast and reverting to the committed selection.
  • Behavioral Change: reasoning effort for Grok is now applied at spawn time rather than via session config, so changing it mid-thread is blocked and requires starting a new thread.
📊 Macroscope summarized 64cbc0c. 26 files reviewed, 0 issues evaluated, 0 issues filtered, 0 comments posted

🗂️ Filtered Issues

No issues evaluated.

>

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 72a67341-bf75-4496-ac58-dd45f02f89ef

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
Comment threadapps/web/src/components/ChatView.logic.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from bbf8c77 to d48e1e6CompareAugust 1, 2026 21:51
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 1, 2026
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from d48e1e6 to f2dc065CompareAugust 2, 2026 12:44
@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Aug 2, 2026
Comment threadapps/server/src/orchestration-v2/ProviderSelectionTransition.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f2dc065 to 80e716cCompareAugust 2, 2026 13:33
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 80e716c to aec2a42CompareAugust 2, 2026 13:53
Comment threadapps/server/src/provider/Layers/GrokProvider.ts
Comment threadapps/server/src/provider/acp/GrokAcpSupport.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch 2 times, most recently from 7880dc6 to f4e2dfbCompareAugust 2, 2026 16:30
@maria-rcks
maria-rcksforce-pushed the t3code/codex-turn-mapping branch from a543fd4 to 378615bCompareAugust 3, 2026 16:01
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from f4e2dfb to 2bf703aCompareAugust 3, 2026 20:17
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 2bf703a to de862bdCompareAugust 3, 2026 22:15
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/mobile/src/state/use-thread-outbox-drain.ts
Comment threadapps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 6590540 to ed0a330CompareAugust 11, 2026 13:50
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from 72e3863 to a186d64CompareAugust 11, 2026 17:07
Comment threadapps/server/src/provider/Layers/GrokProvider.ts Outdated
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts Outdated
Comment threadapps/server/src/provider/acp/AcpSessionRuntime.ts
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from ecac175 to 2c29c37CompareAugust 12, 2026 02:48
Comment threadapps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts
Comment thread.plans/README.md
Comment threadapps/server/src/mcp/OrchestratorMcpService.ts
Comment threadapps/server/scripts/acp-replay-agent.ts
@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning selector

Composer after the change. Grok 4.6 is selected with Extra High as the current reasoning effort.

Grok 4.6 composer with Extra High selected

@mwolson

Copy link
Copy Markdown
ContributorAuthor

After: Grok 4.6 reasoning menu

Open Reasoning menu. Extra High is the only Default.

Grok 4.6 Reasoning menu with Extra High Default

Composer with Grok 4.6 and the open Extra High menu.

Grok 4.6 composer with Extra High menu open

@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch from a186d64 to 5b1a115CompareAugust 12, 2026 23:19
@juliusmarminge
juliusmarmingeforce-pushed the t3code/codex-turn-mapping branch 4 times, most recently from 519c42a to 4c55679CompareAugust 17, 2026 10:28
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 1322776 to 64cbc0cCompareAugust 19, 2026 15:37

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the web UI changes for the session-bound provider-option lock (ChatView, ChatComposer, TraitsPicker, composerProviderState). Prop forwarding through composerProviderState and the display/dispatch split look consistent with the shared control contracts. Two findings on the new locked-option interaction.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/TraitsPicker.tsx
Comment threadapps/web/src/components/ChatView.logic.ts Outdated
Comment threadapps/mobile/src/features/threads/ThreadComposer.tsx
CI Check fails on current CTM because layerTest now surfaces
ServerSettingsError while the ProviderSessionManager test layer requires
never. orDie matches the other test layers.
Advertise Grok reasoning effort from ACP model metadata, with a known grok-4.5 fallback when metadata is absent, and apply the selected CLI-safe value through the agent spawn flag.
Treat reasoning effort as a spawn-bound ACP option so active sessions reject changes, runtime restore paths preserve the applied value, and generic session configuration ignores it. Keep web and mobile selections aligned with the committed session, including durable mobile outbox delivery, while allowing cross-provider handoffs.
Grok 4.6 advertises Extra High and High as default. The picker badges
every isDefault row, so keep at most one and prefer the advertised
current effort.
@mwolson
mwolsonforce-pushed the feat/grok-reasoning-effort branch from 9c587c9 to b59e2d3CompareAugust 19, 2026 18:05
Comment threadapps/web/src/components/ChatView.logic.ts
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Large stale reasoning-controls draft duplicates trusted Grok work in #6386.

@t3dotggt3dotgg closed this Aug 23, 2026
@mwolson
mwolson deleted the feat/grok-reasoning-effort branch August 29, 2026 13:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mwolson@t3dotgg