Repository navigation
[Bug]: Grok threads do not load grok.com connectors from grok /mcps #14175
Description
Activity
Triage
Confirmed on current
main. This is a real gap, and it is not a T3 wiring bug. T3 is not going to grow a second copy of grok.com’s connector catalog.What T3 does
A full-access Grok thread spawns
grok agent --always-approve stdio. Every other runtime mode is the sameagent/stdioentrypoint with a--permission-modeprefix (grokAcpSpawnArgsinapps/server/src/provider/acp/GrokAcpSupport.ts). The only env T3 adds isGROK_OAUTH2_REFERRER=t3code, which is OAuth attribution.session/new,session/load, andsession/resumepassmcpServersfromapps/server/src/provider/acp/AcpSessionRuntime.ts.GrokAdapter.startSessionputs one server on that list when the thread has a T3 MCP endpoint: HTTPt3-code. Otherwise the list is empty. That matches the session you described, and it matchesadmit_client_mcp_serversbeing additive.Nothing in this repo reads
managed_gateway:*or calls the gateway catalog. Orchestrator V2 (#2829) and the ACP bridge port (#13784) still attach onlyt3-code. They do not fetch grok.com connectors.Why T3 cannot inject these
Current
xai-org/grok-buildcrates/codegen/xai-grok-shell/src/session/managed_mcp.rssays managed connectors exist only via the gateway catalog (GET /v1/mcp/tools/list), not as injected HTTP servers.grok mcp list --jsonprinting[]with an empty[mcp_servers.*]config is the local list, not/mcps. Copying those rows into ACPmcpServerswould not work: there is no command or URL to send.grok mcp addremains a separate setup for a normal stdio or HTTP server. It does not turn on the grok.com connector.Upstream
Your out-of-T3 repro is the right isolation:
grok agent --always-approve stdio, theninitialize/authenticate/session/newwithmcpServers: [], never logsFetched managed MCP gateway tool catalog, andx.ai/mcp/listis-32601.GROK_MANAGED_MCP_GATEWAY_TOOLS_ENABLEDand_meta.clientType = grok-pagernot starting that fetch matches the CLI owning this, not T3.One correction against current grok-build
main, which may be newer than 1.0.41 (4220f3b). The ACP agent callsspawn_managed_gateway_tool_catalog_fetch()frominitializeand again after the session is registered (acp_agent.rs). That fetch is gated onmanaged_mcp_gateway_tools_enabledand on the session auth being managed-MCP eligible (OIDC or web login, not the flag alone). T3 picksxai.api_keywhenXAI_API_KEYis set andcached_tokenotherwise. Your standalonegrok agentrun already shows 1.0.41 did not fetch, so T3’s auth choice is not the whole story. I could not open4220f3bfrom here.A catalog fetch is still not a callable tool.
ShellManagedGatewayToolClientinacp_session.rsis what POSTscall_gateway_toolwith the auth token. The error you quoted (indexed but no gateway client is available) is that second half.x.ai/mcp/listis the pager’s extension, not something T3 should implement.Worth one retest after
grok update, same standalonegrok agent --always-approve stdiosteps, before treating “pager is the only loader” as still true. If a newer CLI fetches the catalog but the thread still cannot call Notion or GitHub, the remaining break is still in the CLI.Once
grok agentloads the catalog and has a gateway client, T3 picks the connectors up with no change:session/newstays additive, sot3-codeandmanaged_gateway:*coexist. A strict-MCP spawn (#12914) has to stay opt-in, or it drops these connectors again.Not a duplicate
- feat(grok): let a t3-started Grok session run with only the MCP servers t3 declares #12914 is the opposite problem: a T3 Grok session inherits too many local and compat servers because
session/newadmits instead of replacing. It does not load this catalog. - Please integrate a Notion view #408 was an in-app Notion view.
- Discussion Environment-level MCP servers (and later rules/skills) shared by every provider and account #14118 is user-declared stdio/HTTP servers shared across providers. These connectors have no URL to attach there.
Leaving this open as upstream. No T3 code change until
grok agentcan call the catalog on its own.- feat(grok): let a t3-started Grok session run with only the MCP servers t3 declares #12914 is the opposite problem: a T3 Grok session inherits too many local and compat servers because
- addedbugSomething is broken or behaving incorrectly.Something is broken or behaving incorrectly.via-triageFiled through npx t3 triageFiled through npx t3 triage
on Sep 28, 2026
Before submitting
Area
apps/server
Steps to reproduce
groksession with/mcps. It shows up as a managed gateway server, for examplemanaged_gateway:notion, status ready.grok mcp list --jsonprints[]when~/.grok/config.tomlhas no[mcp_servers.*]entries.grok agent --always-approve stdiowithGROK_OAUTH2_REFERRER=t3code.Same result outside T3, which isolates the entrypoint.
grok agent --always-approve stdio, then ACPinitialize/authenticate/session/newwithmcpServers: []:Fetched managed MCP gateway tool catalog.x.ai/mcp/listreturns-32601 Method not found._meta.clientType = grok-pageron that stdio session does not start the fetch either.managed_mcps.gateway_tools_enabledwas already true (GROK_MANAGED_MCP_GATEWAY_TOOLS_ENABLED). That does not makegrok agentfetch the catalog.Expected behavior
A T3 Grok thread on this account can call the same grok.com connectors that
grok/mcpsshows as ready. T3 keeps injecting its ownt3-codeserver on top of that list.Actual behavior
The T3 thread only has the
t3-codeMCP server. Notion, GitHub, Finance, Automations, and X Money never become tools.Interactive
grok/mcpson 2026-09-28, same account, after the pager loggedFetched managed MCP gateway tool catalog count=161:managed_gateway:financemanaged_gateway:githubmanaged_gateway:notionmanaged_gateway:tasksmanaged_gateway:x_moneygrok mcp listdoes not show these. The user guide saysgrok mcp enable/disableis not/mcpsparity for gateway connectors (managed_gateway:…stays Space-only in the TUI).Cause
Grok has two lists.
~/.grok/config.tomland Claude/Cursor compat files.grok mcp list,grok agent, and a T3 session all see this list. Here it is empty.x.ai/mcp/list. The binary also requires a gateway client to call them (Managed MCP gateway tool '…' is indexed but no gateway client is available).T3 never starts the pager. Full access uses
grokAcpSpawnArgs→["agent", "--always-approve", "stdio"]inapps/server/src/provider/acp/GrokAcpSupport.ts.GROK_OAUTH2_REFERRER=t3codeis OAuth attribution.apps/server/src/provider/Layers/GrokAdapter.tsputs one HTTP server on ACPsession/new:t3-code. That add is on top of whatever the CLI already loaded (admit_client_mcp_serverson Grok 1.0.40+). The CLI loaded nothing from the gateway catalog, so the thread ends witht3-codeonly.Orchestrator V2 does not change this path. On
t3code/codex-turn-mapping(#2829),grokAcpSpawnArgsis stillgrok agent stdio, andAcpAdapterV2attaches only thet3-codebridge. The V2 MCP doc says Grok receives T3's endpoint throughsession/newmcpServers. It does not fetch grok.com connectors.Fix
The break is in the Grok CLI entrypoint T3 is required to use.
grok agentsession startup, fetch the managed gateway catalog and construct the gateway client whenevermanaged_mcps.gateway_tools_enabledis on. The pager andx.ai/mcp/listcannot be the only loader. ACPclientType=grok-pageris not a switch for this.session/newadditive. Once the agent loads the catalog,t3-codeand the connectors coexist. A strict-MCP spawn (feat(grok): let a t3-started Grok session run with only the MCP servers t3 declares #12914) has to stay opt-in, or it drops these connectors again.T3 cannot paper over this by copying
/mcpsrows intomcpServers. Those ids are gateway tools, not stdio/HTTP servers, and there is no URL to inject.Impact
Major degradation or frequent failure
Version or commit
T3 Code
0.0.43-nightly.20260922.2123(orchestrator V1:src/orchestration/Layers/OrchestrationEngine.ts). Grok CLI1.0.41(4220f3b224a6).Environment
Linux. Provider Grok. Same Grok account in the TUI and in T3.
Logs or stack traces
Workaround
grok mcp addwrites a normal stdio or HTTP server into~/.grok/config.toml.grok agentinherits that list, so T3 will see it. That is a second setup. It does not turn on the grok.com connector from/mcps.Not a duplicate