Supported agents
Every AI agent Pushary supports, how each one connects, and whether Pushary can enforce approvals or only send notifications and questions.
Updated
Pushary works with Claude Code, Codex, Gemini CLI, Cursor, Hermes, ChatGPT, Claude and any MCP client. Every agent can send you push notifications and ask you questions. The table shows which agents Pushary can also enforce, meaning the action stops until you approve it, and which only cooperate, meaning the agent decides when to ask.
Most agents in the table set up with one command:
npx pushary@latest setupThis table is generated from the shared Pushary agent manifest. Update it with bun run --cwd packages/contracts gen:agents-docs.
| Agent | How it connects | Enforced approvals | Notifications | Setup |
|---|---|---|---|---|
| Claude Code | Native hooks + MCP | Shell, writes and edits, subject to Claude Code permission mode and explicit policy. | Yes | npx pushary@latest setup, pick Claude Code |
| Codex | Native hooks + MCP | Shell and apply_patch edits through native permission hooks; requires a compatible Codex runtime. | Yes | npx pushary@latest setup, pick Codex |
| Gemini CLI | Native hooks + MCP | Shell, writes, edits and MCP calls through native BeforeTool hooks. | Yes | npx pushary@latest setup, pick Gemini CLI |
| Hermes | Native plugin in ~/.hermes/plugins + approval transport | Hermes dangerous-command approvals when the Pushary transport is selected; optional PUSHARY_GATE_TOOLS gates named tools. | Yes | npx pushary@latest setup, pick Hermes |
| Cursor | Editor plugin hooks + MCP | With installed hooks: shell, MCP execution and Write/Delete/Edit tool calls. Plain MCP remains cooperative. | Yes | npx pushary@latest setup, pick Cursor |
| VS Code | Agent plugin hooks + MCP | PreToolUse approval hooks from the installed agent plugin; the host decides which events it exposes. | Yes | npx pushary@latest setup, pick VS Code |
| OpenCode | Generated plugin + MCP | Shell, writes, edits and web fetches when OpenCode itself asks for permission. | Yes | npx pushary@latest setup, pick OpenCode |
| Qwen Code | Native hooks + MCP | Shell, writes and edits through native PreToolUse hooks, matched on Qwen's own tool names and their Claude-shaped aliases. | Yes | npx pushary@latest setup, pick Qwen Code |
| CodeBuddy | Native hooks + MCP | Shell, writes and edits through native PreToolUse hooks, plus PermissionRequest. CodeBuddy implements the Claude Code hook specification. | Yes | npx pushary@latest setup, pick CodeBuddy |
| Qoder | Native hooks + MCP | Shell, writes and edits through native PreToolUse hooks, plus PermissionRequest, over Qoder's superset of the Claude Code event list. | Yes | npx pushary@latest setup, pick Qoder |
| Droid | Native hooks | Execute, Create, Edit and ApplyPatch through native PreToolUse hooks in ~/.factory/hooks.json. | Yes | npx pushary@latest setup, pick Droid |
| Devin CLI | Native hooks | exec, write and edit through native PreToolUse hooks, answered in Devin's own approve/block schema. | Yes | npx pushary@latest setup, pick Devin CLI |
| Antigravity CLI | Native hooks + MCP | Shell commands, file writes, edits and MCP calls through native PreToolUse hooks in ~/.gemini/config/hooks.json, answered allow or deny. | Yes | npx pushary@latest setup, pick Antigravity CLI |
| Grok Build | Native hooks + MCP | Shell, edits and MCP calls through native PreToolUse hooks. Grok's own permission checks still apply after a phone approval. | Yes | npx pushary@latest setup, pick Grok Build |
| Claude Chat | Custom MCP connector | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | Claude.ai and Claude Desktop setup |
| Claude Cowork | Custom MCP connector + optional Cowork skill | Pushary’s Cowork connector is cooperative: Claude chooses when to ask. It does not intercept Claude’s native permission prompts or start new Cowork tasks. | Yes | Cowork setup |
| ChatGPT | Custom MCP connector | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | ChatGPT setup |
| fx | Local MCP bridge | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | npx pushary@latest setup, pick fx |
| Cline | MCP with your key + global rule | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | npx pushary@latest setup, pick Cline |
| Grok Bot | Grok Bot app plugin (remote MCP connector) | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | Grok Bot setup |
| Windsurf | Plain MCP | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | npx pushary@latest setup, pick Other |
| Lovable | Plain MCP | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | Lovable setup |
| Any MCP client | Plain MCP | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | npx pushary@latest setup, pick Other |
| No-code and HTTP | REST with a Bearer token | Cooperative. The agent chooses when to ask; no native permission interception. | Yes | Connect any agent |
- Hermes: Uses the Pushary plugin in ~/.hermes/plugins/pushary, not a macOS bridge HookSource. CLI disconnect and managed-provider controls are not implemented for Hermes.
- VS Code: Has both a bridge HookSource and a per-agent policy profile. CLI disconnect and managed-provider controls are not implemented for VS Code.
- Qoder: Qoder documents no user-level instructions file, so the proactive-ask block is not installed. Hooks and MCP are unaffected.
- Droid: Droid registers MCP servers through
droid mcp addrather than a documented remote-server config shape, so setup writes hooks only. Add Pushary's MCP server yourself to let Droid send notifications and ask questions. - Devin CLI: Devin CLI answers PreToolUse with
{decision}rather than a permission decision. Pushary blocks an unanswered approval because this adapter cannot request a native prompt reliably. Question and plan dialogs remain with Devin; this adapter does not render their answers. It also fires no Notification event. - Antigravity CLI: Antigravity CLI ignores a hook's allow unless it runs in always-proceed mode, so connecting it sets
toolPermission: "always-proceed"when you never chose a mode, and disconnecting puts it back. Pushary is then the only gate: it answers allow or deny and never ask, and a call it cannot decide, one nobody answers, or one made after Pushary was removed is blocked with a reason. - Grok Build: Grok fails open if it kills a hook or cannot run it. Setup leaves Grok's permission mode unchanged. Native question and plan dialogs stay in Grok; proactive phone questions use Pushary MCP.
- fx: fx has no hooks that other tools can register, so Pushary cannot answer fx's own approval prompts. Setup turns off fx's terminal question tool so fx's agent asks through Pushary. fx's full-access mode ignores that setting; there the agent is only instructed to ask through Pushary.
- Cline: Setup writes the Pushary server, with your key, into Cline's shared MCP settings and a global rule that tells Cline to ask and notify through Pushary. Cline's own approval prompts stay in VS Code. Auto-approving MCP servers in Cline lets Pushary calls run without a click there, and it applies to every MCP server Cline has, not only Pushary.
- Grok Bot: Grok Bot keeps its own approval cards, and Pushary cannot stop a Bot in the middle of a task. A question nobody answers expires after about ten minutes and is never treated as a yes.
For an unsupported or omitted policy-agent name, the API returns resolvedAgent: "*". This reports the selected agent scope; preset loading still falls back to an all-agents preset or built-in defaults when no matching preset exists. Integration capabilities do not prove that this installation or its phone route has been verified.
Enforced or cooperative: what is the difference?
Enforced means the agent cannot run the action until you approve it. Cooperative means the agent decides whether to ask, so it might not. The table above lists the exact enforcement boundary for each integration.
What are hooks?
A hook is a small program the agent runs before it uses a tool. Pushary's hook checks your policy and, when needed, holds the action until you answer on your phone. Agents without hooks (plain MCP, Windsurf, no-code tools) get notifications and questions only.
Why does Pushary not ask in some Claude Code permission modes?
Claude Code's own permission mode wins. In plan, auto and dontAsk, Claude Code has already decided how it handles permissions, so Pushary steps aside instead of asking on top of it. In acceptEdits, writes and edits are left to Claude Code, and shell commands still go through Pushary.
Hooks run before Claude Code's own prompt. Asking in those modes would ask you twice for one action, or contradict the mode you picked.
Some things still apply in every mode: the kill switch, any deny rule, and a scope you approved. Questions (AskUserQuestion) and plan approvals (ExitPlanMode) are still asked too. Set PUSHARY_RESPECT_PERMISSION_MODE=0 to have Pushary ask in every mode.
Which OpenCode versions work?
The generated plugin supports OpenCode V2 and the V1 compatibility entry introduced in 1.18.29. After updating Pushary, run setup again to replace the installed plugin. Existing MCP configuration can stay as it is; V2 reads the earlier format.
V2 approvals cover shell commands in the active working directory, single-file reads, writes and edits, and web fetches. Outside-directory access, another shell working directory, multi-file edits, renames with two paths, and custom permissions stay in OpenCode's native prompt. A phone answer grants one request, not a session-wide permission. Native questions also stay in OpenCode.
Why does OpenCode not ask me about some tools?
OpenCode decides which actions need a decision, and Pushary answers the ones it raises. Out of the box OpenCode runs shell commands, edits and web fetches without asking, so setup sets bash, edit and webfetch to ask under permission in opencode.json, but only for a tool no rule of yours names, and it puts them before your rules so yours still decide. If your opencode.json allows a tool outright, OpenCode never asks anybody, Pushary included. Set that tool back to ask and the approval reaches your phone. pushary doctor tells you which of the three OpenCode would run without asking.
Which tools does each key get?
Every MCP integration gets the same six agent tools: send_notification, ask_user, propose_scope, wait_for_answer, cancel_question and schedule_reminder. What differs is the key.
A key from setup or phone pairing also gets list_sessions. A key you create in Settings > API keys also gets the push platform tools (subscribers, campaigns, templates, flows). A connector link for Claude or ChatGPT gets only the six agent tools, so those apps are never offered tools that would only refuse them. See the tools reference for every argument.
Find the page for your goal
| Goal | Where to go |
|---|---|
| Get pinged when my agent finishes | Receiving notifications |
| Approve risky commands before they run | Permission policies |
| Answer my agent's questions from my phone | Human in the loop |
| Stop everything right now | Kill switch |
| See what my agents did | Audit log |
| Connect a tool not listed above | Connect any agent |
Next step
Run the quickstart
One command finds your agents, installs the hooks and pairs your phone.
Connect any agent
No hooks? Use MCP or a plain HTTP request to ask and wait for an answer.