Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Install current Grok CLI (
grok1.0.x) and authenticate (grok login). - Install T3 Code (Desktop / AppImage). Enable the Grok provider; wait until status is
ready. - Open a project and create a new thread with provider Grok.
- In the model picker, select Grok Build (slug
grok-build) — or start a turn while that model is selected. - Send any message (e.g.
hi).
Expected behavior
- The model picker only lists model IDs that the live Grok ACP agent accepts (from
session/new→models.availableModels), or - Selecting the product-named option Grok Build is aliased to the real ACP model id (
grok-4.5today) sosession/set_modelsucceeds. - The turn starts normally.
Actual behavior
- T3 advertises both
grok-4.5(Grok 4.5) andgrok-build(Grok Build) in the provider snapshot / model picker. - Starting a turn with
grok-buildfails duringstartSession:session/newsucceeds- T3 calls
session/set_modelwithmodelId: "grok-build" - Grok returns JSON-RPC
-32602 Invalid paramswith dataunknown model id - UI shows a stack originating in Effect schema decode →
startSession→ensureSessionForThread→processTurnStartRequested
Selecting Grok 4.5 (grok-4.5) works.
Impact
Major degradation or frequent failure
Anyone who picks Grok Build (or lands on the hard-coded default slug) cannot start Grok turns. The product name and model slug are easy to confuse.
Version or commit
- T3 Code:
v0.0.33(Linux AppImage; also confirmed against currentmainsource) - Grok CLI:
1.0.0(grok agent stdio)
Environment
- OS: Linux (Ubuntu)
- Provider cache (
~/.t3/caches/grok.json):status: "ready", models include bothgrok-4.5andgrok-build - Default text generation selection can be
grok-4.5, but choosing Grok Build still fails
Logs or stack traces
Error: Invalid params
at decodeJsonError (.../effect/dist/SchemaTransformation.js)
...
at startSession (.../apps/server/dist/bin.mjs)
at ensureSessionForThread (...)
at processTurnStartRequested (...)
Server trace span (excerpt):
{
"name": "RpcClient.session/set_model",
"exit": { "_tag": "Failure", "cause": "Error: Invalid params..." }
}Provider event sequence for a failing thread:
session/new→ succeededsession/set_model→ failed (errorTag: Die)
Direct ACP repro (outside T3):
# session/new → availableModels is only grok-4.5
# then:
session/set_model { "sessionId": "...", "modelId": "grok-build" }
# → {"error":{"code":-32602,"message":"Invalid params","data":"unknown model id"}}
session/set_model { "sessionId": "...", "modelId": "grok-4.5" }
# → successLive Grok session/new models (Grok 1.0.0):
{
"currentModelId": "grok-4.5",
"availableModels": [
{ "modelId": "grok-4.5", "name": "Grok 4.5" }
]
}(grok models also lists only grok-4.5 as the available model.)
Root cause (from T3 source)
This is not a per-machine Grok install issue. T3 hardcodes the product name as a model slug:
- Built-in fallback catalog always includes
grok-build/ Grok Build:
// apps/server/src/provider/Layers/GrokProvider.ts
const GROK_BUILT_IN_MODELS = [
{ slug: "grok-build", name: "Grok Build", ... },
];- Default model for the Grok provider is still
grok-build:
// packages/contracts/src/model.ts
DEFAULT_MODEL_BY_PROVIDER[GROK_DRIVER_KIND] = "grok-build"- Empty/missing model selection falls back to
grok-build:
// apps/server/src/provider/acp/GrokAcpSupport.ts
resolveGrokAcpBaseModelId(...) // defaults to "grok-build"Naming confusion:
- Grok Build = product / CLI (
grok) - Grok 4.5 = current ACP model id
Grok itself advertises “Select 'Grok 4.5' under /model.” There is no alias mapping grok-build → grok-4.5 on either side for session/set_model.
Workaround
In the T3 model picker, select Grok 4.5 (grok-4.5) and use a new thread after changing models (requiresNewThreadForModelChange: true for Grok).
Suggested fix
Any of:
- Drop hard-coded
GROK_BUILT_IN_MODELS/ default sluggrok-build; default to live discovery only (or togrok-4.5). - Alias
grok-build→ current ACP model id (grok-4.5) inresolveGrokAcpBaseModelId/MODEL_SLUG_ALIASES_BY_PROVIDER. - Prefer only
session/new→models.availableModelsfor the picker when discovery succeeds; never leave a non-accepted built-in slug selectable. - If
session/set_modelfails withunknown model id, surface a clear message and fall back tocurrentModelIdfromsession/newinstead of failing the whole turn.
Related (not duplicates)
- [Bug]: Grok provider: skills/slash commands empty; ACP crash on skills-reload (BigInt RequestId) #4109 — Grok skills/slash empty; env notes cache lists both slugs, different failure mode
- Grok provider: native ACP parity (catalog, effort, usage) #5418 / feat(grok): native ACP parity (catalog, effort, usage, plan, multi-agent, compact) #5503 — Grok ACP parity (catalog/effort/usage)
- fix(grok): surface per-model reasoning effort in the composer #5403 — apply reasoning effort via
session/set_model(assumes model id is valid) - Provider notification consumers are interrupted when startSession returns (Cursor, Grok, Codex) #5781 — notification consumers after
startSession(session starts; different symptom)
Screenshots, recordings, or supporting files
No response
Activity
mferraznw commentedon Aug 11, 2026
Same issue, have to use the non-optimized model. One mac, nightly build, grok super heavy sub.
fix(grok): close reported model, login, permission, and tool-update i…
maslinedwin commentedon Aug 16, 2026
Fix is in #7070 (
b0079ede). T3 now maps the product sluggrok-buildonto a live ACP model id (grok-4.6/grok-4.5/ the current session model) beforesession/set_model, so picking Grok Build no longer fails withunknown model id.wallmage commentedon Aug 21, 2026
Still reproduces on current Nightly (Grok 4.6 era)
Confirming this is still broken after Grok 4.6 shipped. Picking Grok Build in T3 still fails; Grok 4.6 works.
Environment
0.0.34-nightly.20260821.1151(macOS)1.0.5(grok agent stdio)What happens
Error: Invalid params at decodeJsonError(Schema-DNmPah4h.mjs).Direct ACP probe (outside T3)
session/newreports:currentModelId:grok-4.6availableModels:grok-4.6,grok-4.5onlyThen:
session/set_modelmodelIdgrok-build-32602 Invalid params/unknown model idgrok-4.6grok modelsmatches that catalog (defaultgrok-4.6, alsogrok-4.5). There is still no livegrok-buildmodel id.Notes
grok-4.6instead ofgrok-4.5.session/set_modelfails withunknown model id#7791grok-build→ a live ACP id, but that PR is still open / unmerged, so Nightly does not have the fix.Workaround: hide Grok Build and select Grok 4.6 (new thread after the model change).
session/set_modelfails withunknown model id#7791 as a duplicate of this issuet3dotgg commentedon Sep 2, 2026
Note
🤖 Claude Fable 5.1 responding on behalf of Theo
Fixed in #9154. Thank you for the clear reproduction, @madhu-korada.
grok-buildis the CLI's product name, not a model id its ACP accepts. Picking it now means "use whatever model the Grok session is on" and it is never sent insession/set_model. The model picker also lists the versioned ids the CLI advertises with the current one marked default. It will be in the next nightly.