Agent capabilities
What each coding agent can and cannot do inside Happier, generated from the agent manifest.
Happier drives coding agents; it does not replace them. What any given session can do is therefore the intersection of what Happier supports and what that agent's own CLI exposes — which is why these tables exist rather than one list of features.
Every table on this page is generated from the agent manifest in
packages/agents, so it describes the build you are reading the docs for
rather than the state of things whenever someone last updated a wiki page. A
dash means the agent does not support that capability, not that Happier has not
got to it yet.
3 of the 18 agents are marked Stable: Claude, Codex, OpenCode. The rest are Experimental — they work, and people use them daily, but their integration is younger and more likely to change. Availability of an agent is separate from availability of a feature; see Server feature flags for the latter.
Agents at a glance
| Agent | Start it with | Status | Models | Managed install |
|---|---|---|---|---|
| Claude | happier claude | Stable | Queried from the agent, custom ids allowed | Vendor recipe |
| Codex | happier codex | Stable | Queried from the agent | Vendor's own installer |
| OpenCode | happier opencode | Stable | Queried from the agent, custom ids allowed | opencode-ai |
| Gemini | happier gemini | Experimental | Queried from the agent, custom ids allowed | @google/gemini-cli |
| Auggie | happier auggie | Experimental | Queried from the agent | @augmentcode/auggie |
| Qwen Code | happier qwen | Experimental | Queried from the agent | @qwen-code/qwen-code |
| Kimi | happier kimi | Experimental | Queried from the agent | Vendor recipe |
| Kilo | happier kilo | Experimental | Queried from the agent | @kilocode/cli |
| Kiro | happier kiro | Experimental | Fixed list, custom ids allowed | Vendor's own installer |
| Devin | happier devin | Experimental | Queried from the agent | Vendor's own installer |
| Custom ACP | happier customAcp | Experimental | Queried from the agent, custom ids allowed | Vendor recipe |
| Pi | happier pi | Experimental | Queried from the agent, custom ids allowed | @earendil-works/pi-coding-agent |
| Copilot | happier copilot | Experimental | Queried from the agent | @github/copilot |
| Cursor | happier cursor | Experimental | Queried from the agent | Vendor recipe |
| Grok | happier grok | Experimental | Queried from the agent | Vendor recipe |
| Antigravity | happier agy | Experimental | Queried from the agent, custom ids allowed | Vendor recipe |
| FX | happier fx | Experimental | Queried from the agent | Vendor recipe |
| Factory Droid | happier droid | Experimental | Queried from the agent | Vendor recipe |
Where the managed-install column names a package, Happier can install the agent for you from the machine's detail screen. Where it says the vendor's own installer, run that first — see the agent's own page for the exact command.
Custom ACP is not a bundled agent. It is how you point Happier at any agent that speaks the Agent Client Protocol, so its row describes the adapter rather than a particular vendor. See Custom ACP.
Several subcommands accept aliases, so the name you already have in your fingers
usually works: codex also answers to codex-acp, codex-mcp, openai, gpt; opencode also answers to open-code; qwen also answers to qwen-code; kimi also answers to kimi-cli; kilo also answers to kilocode; kiro also answers to kiro-cli; devin also answers to devin-cli; customAcp also answers to custom-acp; pi also answers to pi-coding-agent; copilot also answers to github-copilot, copilot-cli; cursor also answers to cursor-agent; grok also answers to grok-build, grok-cli; droid also answers to factory-droid.
Sessions
Resume, browse, fork and roll back are the four things people most often assume work everywhere. They do not.
| Agent | Resume by agent session ID | Fork a conversation | Fork from a message | Roll back | Browse resume candidates |
|---|---|---|---|---|---|
| Claude | Yes | — | — | — | Yes |
| Codex | Experimental | Yes | — | Yes | Yes |
| OpenCode | Yes | Yes | Yes | — | Yes |
| Gemini | Yes | — | — | — | — |
| Auggie | Yes | — | — | — | Yes |
| Qwen Code | Yes | — | — | — | Yes |
| Kimi | Yes | Yes | — | — | Yes |
| Kilo | Yes | — | — | — | Yes |
| Kiro | Experimental | — | — | — | — |
| Devin | Yes | — | — | — | Yes |
| Custom ACP | — | — | — | — | — |
| Pi | Yes | — | — | — | — |
| Copilot | Yes | — | — | — | Yes |
| Cursor | Experimental | — | — | — | — |
| Grok | Experimental | — | — | — | — |
| Antigravity | Yes | — | — | — | — |
| FX | Yes | — | — | — | Yes |
| Factory Droid | Yes | — | — | — | — |
"Resume by agent session ID" means Happier can pass a saved agent-owned ID back to that agent. It does not establish that the interactive terminal and ACP use the same session IDs. "Fork" means the agent's own runtime can branch a conversation; where it cannot, Happier's replay fork still works, because that is Happier's own mechanism rather than the agent's. See Session forking.
The last column means Happier offers a browser for the agent's resume
candidates. FX and Kimi use the shared ACP session/list source; agents with
dedicated session integrations use their own established sources. An ACP-listed
result only starts a Happier-controlled resume, and the live handshake still
decides whether the installed agent can list sessions. Listing does not
establish terminal/ACP identity, live takeover, writer safety, transcript
following, transcript import, or terminal attachment. See
Continuing a session for the distinct session
continuation paths.
Running a turn
| Agent | Steer a running turn | Session modes | Dedicated plan control | Accept edits |
|---|---|---|---|---|
| Claude | Yes | Agent modes, built in | Yes | Yes |
| Codex | — | Policy presets, from the agent | — | — |
| OpenCode | — | Agent modes, from the agent | Yes | — |
| Gemini | — | — | — | — |
| Auggie | — | — | — | — |
| Qwen Code | — | Agent modes, from the agent | Yes | — |
| Kimi | — | — | — | — |
| Kilo | — | Agent modes, from the agent | Yes | — |
| Kiro | — | Agent modes, from the agent | Yes | — |
| Devin | — | Agent modes, from the agent | Yes | — |
| Custom ACP | — | Agent modes, from the agent | Yes | — |
| Pi | Yes | — | — | — |
| Copilot | — | Agent modes, from the agent | Yes | — |
| Cursor | — | Agent modes, from the agent | Yes | — |
| Grok | Yes | — | — | — |
| Antigravity | — | — | — | — |
| FX | — | Agent modes, from the agent | Yes | — |
| Factory Droid | — | Agent modes, from the agent | Yes | — |
Steering is what lets you add a correction to a turn already in flight instead of interrupting it. Where an agent cannot steer, Happier interrupts and resends, which is slower and loses less than it sounds — see Steering.
Session modes are not permission modes. Where the list comes from the
agent, Happier shows whichever modes that build advertises for the session, so
the choices can differ between versions and the Mode control is hidden when the
runtime offers none. A dash under "Dedicated plan control" means Happier has no
plan-specific affordance for that agent — not that the agent lacks a plan
mode. Codex, for instance, reaches plan through the Mode control.
Media and tools
| Agent | Publishes generated media | Declares image input | Declares native image generation | Happier tools | Connected Services |
|---|---|---|---|---|---|
| Claude | Yes | Yes | — | Yes (native_mcp) | claude-subscription, anthropic |
| Codex | Yes | Yes | Yes | Yes (native_mcp) | openai-codex, openai |
| OpenCode | Yes | Experimental | — | Yes (native_mcp) | openai-codex, openai, claude-subscription, anthropic |
| Gemini | — | Yes | — | Yes (native_mcp) | gemini |
| Auggie | Experimental | Experimental | — | Experimental (native_mcp) | — |
| Qwen Code | Yes | Experimental | — | Experimental (native_mcp) | — |
| Kimi | Yes | Experimental | — | Experimental (native_mcp) | — |
| Kilo | Yes | Experimental | — | Experimental (native_mcp) | — |
| Kiro | Yes | Experimental | — | Yes (native_mcp) | — |
| Devin | Yes | Experimental | — | Yes (native_mcp) | — |
| Custom ACP | Yes | Experimental | — | Yes (native_mcp) | — |
| Pi | Experimental | Experimental | — | Experimental (shell_bridge) | openai-codex, openai, claude-subscription, anthropic |
| Copilot | Yes | Experimental | — | Experimental (native_mcp) | — |
| Cursor | Yes | — | Yes | Experimental (native_mcp) | — |
| Grok | — | — | — | Experimental (native_mcp) | — |
| Antigravity | Yes | Experimental | — | Yes (native_mcp) | — |
| FX | Yes | Yes | — | Yes (native_mcp) | — |
| Factory Droid | Yes | Experimental | — | Yes (native_mcp) | — |
Two of these columns describe what an integration declares, not what Happier enforces, and the distinction matters if you are deciding whether to attach a screenshot.
Publishes generated media is behavioural: Happier reads it when wiring an agent's runtime, so an agent marked here really can put generated images into a session.
Declares image input and Declares native image generation are the integration's own statements about the agent, and no code path currently gates on either. In practice, an ACP-backed session attaches your trusted local images to the prompt regardless of what the manifest says — whether the agent then does anything useful with them is the agent's business, not Happier's. So treat a dash in those two columns as "not claimed", not "will be refused", and expect some declarations to lag the runtime.
Authentication
| Agent | Where its credentials live | Background auth checks |
|---|---|---|
| Claude | ~/.claude/.credentials.json or ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN | Automatic |
| Codex | ~/.codex/auth.json or OPENAI_API_KEY, CODEX_API_KEY | Automatic |
| OpenCode | Agent-managed | Automatic |
| Gemini | ~/.gemini/oauth_creds.json or GEMINI_API_KEY, GOOGLE_API_KEY | Automatic |
| Auggie | Agent-managed | Automatic |
| Qwen Code | Agent-managed | Automatic |
| Kimi | Agent-managed | Automatic |
| Kilo | Agent-managed | Automatic |
| Kiro | Agent-managed | Manual only |
| Devin | Agent-managed | Manual only |
| Custom ACP | Agent-managed | Manual only |
| Pi | OPENAI_API_KEY, ANTHROPIC_API_KEY | Automatic |
| Copilot | COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN | Automatic |
| Cursor | CURSOR_API_KEY | Automatic |
| Grok | XAI_API_KEY | Automatic |
| Antigravity | Agent-managed | Manual only |
| FX | VERCEL_OIDC_TOKEN, AI_GATEWAY_API_KEY | Manual only |
| Factory Droid | FACTORY_API_KEY | Manual only |
Agents whose background checks are manual only are not re-probed on a timer. Whether a manual refresh can resolve a status depends on the agent's configured status check; an agent-managed row may remain Unknown even when Happier can open its login flow. See Agent authentication.
Related
- Coding agents — one page per agent, with setup and known limits.
- Model and engine selection
- Server feature flags