Review each request
When an agent requests permission for a tool call, file edit, or command, AgentPeek opens the prompt inline with the command, file path, or diff laid out. The notch can auto-expand the moment a prompt arrives, so the decision comes to you instead of sitting unnoticed in a background terminal.
- ⌘ A to allow, ⌘ N to deny.
- ⌥ A for Always Allow, when the prompt offers it.
- ⌥ T to jump to the session's terminal.
- Arrow keys move between stacked prompts when several agents want you at once.
In-notch answers work for Claude Code, Codex, Cursor, Qoder, CodeBuddy, Gajae Code Direct Chat, OpenCode, MiMo Code, GitHub Copilot, Kilo Code, Factory Droid, Antigravity, Qwen Code, Pi, Oh My Pi Direct Chat, Cline, Goose Direct Chat, Kiro Direct Chat, Mistral Vibe Direct Chat, and Devin. Entries marked Direct Chat answer only inside the turn AgentPeek owns, never the prompts those agents raise on their own. Antigravity, Factory Droid, and Qoder answer the mutating tools their hooks hold, while reads and any request AgentPeek cannot reach return to the agent's native flow. Grok Build, Kimi Code, Hermes, Oh My Pi, and ZCode accept no hook response, so AgentPeek flags their waiting prompts and jumps you to the session instead. Aider exposes no prompt channel at all, so its sessions stay view-only.
Where each agent draws the line
AgentPeek only offers the answer channel an agent actually exposes. Some answer straight from their hooks, within the limits their hook contract sets. Others answer only inside Direct Chat, the turn AgentPeek owns over the agent's own ACP transport, while ambient prompts they raise on their own stay with the agent.
- Qwen Code: approve, deny, and Open Terminal work on
PermissionRequest, and Always Allow appears only when Qwen supplies a concrete allow suggestion.ask_user_questionstays in Qwen's native terminal and surfaces here as an attention handoff. - Cline: the global
agentpeek.tsplugin gates known mutating built-ins inbeforeTool, meaningrun_commands,editor, andapply_patch. Approve, deny, deny with feedback, and Open Terminal are available per call. Cline exposes no persistent Always Allow channel, and unknown extension tools remain observation-only unless AgentPeek can classify them safely. - Oh My Pi: the managed extension observes
tool_approval_requestedandtool_approval_resolvedwithout ever returning a decision, so ambient approvals stay in OMP. Direct Chat launchesomp acp, where native ACP permissions can be answered in the notch. - Goose:
PreToolUseandStopcan enforce Open Plugin policy denial, but the hooks expose neither a native approval channel nor a permission-wait event, so external approvals stay entirely in Goose. Direct Chat runsgoose acp, where native ACP permissions work. - Kiro: hooks live only inside selected custom-agent JSON under
~/.kiro/agentsor.kiro/agents, never as a global built-in-agent hook, and AgentPeek neither installs nor mutates those files. External approvals stay in Kiro. Direct Chat runskiro-cli acp, where native ACP permissions work. - Mistral Vibe: managed observer hooks report tool and turn activity but never return a permission decision. Direct Chat launches
vibe-acp, where native ACP permission options work in the notch. - Command Code: native permission policy runs before its
PreToolUseobserver, so AgentPeek cannot turn the hook into a waiting prompt or decision. The session's Open Terminal action returns to the Command Code surface that owns native permissions.
Open Terminal stays on every prompt AgentPeek raises, so even the ones it can't answer are one keystroke from the terminal that owns them. Devin desktop is the exception: its Cascade hooks are observers, so those sessions never raise a prompt and carry no actions.
Questions and plans
When an agent asks a question, AgentPeek shows the title, detail, and options: click one, or type a custom reply when the agent allows it. Multi-part questions get one card per part, single or multi-select, with a Send button that lights up once you've answered them all. For a plan, the buttons read Approve and Reject, and Reject with feedback lets you send a note back explaining what to change.
You stay in charge
AgentPeek sends a response only when you choose an action. Prefer approvals to stay in the terminal? Switch prompt handling to App / CLI in Settings, or set global hotkeys to allow or deny the frontmost prompt without opening AgentPeek at all. Every prompt and answer also lands in the session timeline, next to the usage numbers and tool calls it belongs with. And when it's your turn to steer, the same panel sends the next prompt.
