# Inside another editor
Codey can be the agent behind somebody else's UI. It speaks the
[Agent Client Protocol](https://agentclientprotocol.com) — JSON-RPC over stdin
and stdout — so a control plane that drives Codex, Claude Code or Cursor can
drive this instead:
```bash
codey agent stdio
```
Nothing but protocol frames goes to stdout in that mode; diagnostics go to
stderr. The connection ends when stdin does.
## T3 Code
[T3 Code](https://t3.codes) compiles its providers in, so there is no Codey
entry to select. There is, however, a binary path on every provider, and its
Grok provider is a plain ACP agent — which means Codey can take that slot with
no change to their source. In **Settings → Providers**, enable Grok, set
**Binary path** to your `codey`, and rename the instance:
```json
"providerInstances": {
"codey": {
"driver": "grok",
"displayName": "Codey",
"enabled": true,
"config": { "binaryPath": "/path/to/codey" },
"environment": [
{ "name": "ANTHROPIC_API_KEY", "value": "sk-ant-...", "sensitive": true }
]
}
}
```
That file is `~/.t3/userdata/settings.json`; the settings panel writes the same
thing. The per-instance environment is how Codey gets a credential without
inheriting whatever the desktop app was launched with — and without it, the
provider card will say Codey is installed and not logged in, which is true.
Threads stream text and reasoning, fill a tool row in as the command talks,
raise an approval prompt you answer in T3 Code's own panel, and stop when you
press stop. The model picker is filled from the endpoint Codey is pointed at.
[Subagents](subagents.md) work too. Each one gets a row of its own that opens
when the child starts, fills in as it works, and closes with its report, and
the reports reach the parent as messages exactly as they do in the TUI. A turn
stays open while its children are still working — their output belongs inside
the turn that started them, and a thread that looked finished while four agents
were still running would be lying. `-no-agents` in the launch arguments turns
them off.
What does not work is resuming a thread after a restart: Codey does not
advertise session loading, so T3 Code will not offer it.
The card will say Grok and show the xAI glyph. The display name and accent
colour are yours to set; the icon is not. That is the price of occupying a slot
instead of adding one.
Two invocations exist only for that provider card: `codey --version`, and
`codey models`, which prints whether there is a credential and what the
endpoint serves. Both are shaped for the regular expressions on the other end
rather than for a person. The probe follows the same opt-in as everything else:
a Claude Code login counts as logged in only when the config says
`"claude_code_auth": "on"` — the probe is run with no flags, so
`-claude-code-auth` in the launch arguments reaches the agent but not the card.
[The T3 Code provider design](../superpowers/specs/2026-09-19-t3code-provider-design.md) is the research
this is built on: what every T3 Code provider requires of a binary, and why the
Grok slot is the one that fits.