HappierDocs
Agents and models

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

AgentStart it withStatusModelsManaged install
Claudehappier claudeStableQueried from the agent, custom ids allowedVendor recipe
Codexhappier codexStableQueried from the agentVendor's own installer
OpenCodehappier opencodeStableQueried from the agent, custom ids allowedopencode-ai
Geminihappier geminiExperimentalQueried from the agent, custom ids allowed@google/gemini-cli
Auggiehappier auggieExperimentalQueried from the agent@augmentcode/auggie
Qwen Codehappier qwenExperimentalQueried from the agent@qwen-code/qwen-code
Kimihappier kimiExperimentalQueried from the agentVendor recipe
Kilohappier kiloExperimentalQueried from the agent@kilocode/cli
Kirohappier kiroExperimentalFixed list, custom ids allowedVendor's own installer
Devinhappier devinExperimentalQueried from the agentVendor's own installer
Custom ACPhappier customAcpExperimentalQueried from the agent, custom ids allowedVendor recipe
Pihappier piExperimentalQueried from the agent, custom ids allowed@earendil-works/pi-coding-agent
Copilothappier copilotExperimentalQueried from the agent@github/copilot
Cursorhappier cursorExperimentalQueried from the agentVendor recipe
Grokhappier grokExperimentalQueried from the agentVendor recipe
Antigravityhappier agyExperimentalQueried from the agent, custom ids allowedVendor recipe
FXhappier fxExperimentalQueried from the agentVendor recipe
Factory Droidhappier droidExperimentalQueried from the agentVendor 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.

AgentResume by agent session IDFork a conversationFork from a messageRoll backBrowse resume candidates
ClaudeYes———Yes
CodexExperimentalYes—YesYes
OpenCodeYesYesYes—Yes
GeminiYes————
AuggieYes———Yes
Qwen CodeYes———Yes
KimiYesYes——Yes
KiloYes———Yes
KiroExperimental————
DevinYes———Yes
Custom ACP—————
PiYes————
CopilotYes———Yes
CursorExperimental————
GrokExperimental————
AntigravityYes————
FXYes———Yes
Factory DroidYes————

"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

AgentSteer a running turnSession modesDedicated plan controlAccept edits
ClaudeYesAgent modes, built inYesYes
Codex—Policy presets, from the agent——
OpenCode—Agent modes, from the agentYes—
Gemini————
Auggie————
Qwen Code—Agent modes, from the agentYes—
Kimi————
Kilo—Agent modes, from the agentYes—
Kiro—Agent modes, from the agentYes—
Devin—Agent modes, from the agentYes—
Custom ACP—Agent modes, from the agentYes—
PiYes———
Copilot—Agent modes, from the agentYes—
Cursor—Agent modes, from the agentYes—
GrokYes———
Antigravity————
FX—Agent modes, from the agentYes—
Factory Droid—Agent modes, from the agentYes—

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

AgentPublishes generated mediaDeclares image inputDeclares native image generationHappier toolsConnected Services
ClaudeYesYes—Yes (native_mcp)claude-subscription, anthropic
CodexYesYesYesYes (native_mcp)openai-codex, openai
OpenCodeYesExperimental—Yes (native_mcp)openai-codex, openai, claude-subscription, anthropic
Gemini—Yes—Yes (native_mcp)gemini
AuggieExperimentalExperimental—Experimental (native_mcp)—
Qwen CodeYesExperimental—Experimental (native_mcp)—
KimiYesExperimental—Experimental (native_mcp)—
KiloYesExperimental—Experimental (native_mcp)—
KiroYesExperimental—Yes (native_mcp)—
DevinYesExperimental—Yes (native_mcp)—
Custom ACPYesExperimental—Yes (native_mcp)—
PiExperimentalExperimental—Experimental (shell_bridge)openai-codex, openai, claude-subscription, anthropic
CopilotYesExperimental—Experimental (native_mcp)—
CursorYes—YesExperimental (native_mcp)—
Grok———Experimental (native_mcp)—
AntigravityYesExperimental—Yes (native_mcp)—
FXYesYes—Yes (native_mcp)—
Factory DroidYesExperimental—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

AgentWhere its credentials liveBackground auth checks
Claude~/.claude/.credentials.json or ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKENAutomatic
Codex~/.codex/auth.json or OPENAI_API_KEY, CODEX_API_KEYAutomatic
OpenCodeAgent-managedAutomatic
Gemini~/.gemini/oauth_creds.json or GEMINI_API_KEY, GOOGLE_API_KEYAutomatic
AuggieAgent-managedAutomatic
Qwen CodeAgent-managedAutomatic
KimiAgent-managedAutomatic
KiloAgent-managedAutomatic
KiroAgent-managedManual only
DevinAgent-managedManual only
Custom ACPAgent-managedManual only
PiOPENAI_API_KEY, ANTHROPIC_API_KEYAutomatic
CopilotCOPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKENAutomatic
CursorCURSOR_API_KEYAutomatic
GrokXAI_API_KEYAutomatic
AntigravityAgent-managedManual only
FXVERCEL_OIDC_TOKEN, AI_GATEWAY_API_KEYManual only
Factory DroidFACTORY_API_KEYManual 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.

On this page