Free & open source · macOS 14+

Dynamic Island for your AI agents

Approve tool calls from your notch. See every active agent at a glance. Pick options without leaving your terminal. Auto-approve safe tools; the danger detector always forces a human gate on destructive commands.

agent-island Working… 1 2
2 active sessions
agent-island
Editing PermissionDiffCard.swift
↗ Jump
Permission needed
Bash ~/Desktop/agent-island
$ git reset --hard HEAD~5
⚠︎ Destructive command — auto-approve is overridden
⌘N Deny
⌘Y Approve
↑ Click the demo to collapse/expand — that's how the notch works in real life.

One menubar app. Every workflow saved.

Built for people who run agents all day and don't want to babysit them — but also don't want a hard-coded auto-approve on a `rm -rf`.

Notch-anchored approvals

Permission cards drop straight out of the macOS notch with file paths, diffs, plan markdown, and Approve/Deny buttons.

AskUserQuestion picker

Multi-choice tool prompts become clickable buttons. Your pick is typed into the right terminal automatically.

Multi-session aggregator

Every active agent gets a card in the popover, filterable by project or source. Jump back to its terminal with one click.

Auto-approve, safely

Global toggle, per-tool allow-list, and "always allow this tool" inline on the approval card. Destructive Bash never auto-approves.

Danger detector

rm -rf, dd, curl|sh, force-pushes, SQL drops, fork bombs — all force a human gate with a red warning banner.

Zero telemetry, local only

Bridge talks to the app over /tmp/agentisland.sock. History as plain JSONL. No analytics, no SDK, no phone-home.

How it works

Four moving parts, one user-facing surface.

01

Hook fires

Claude Code (or any agent that speaks the hook contract) calls a tool. agentisland-bridge intercepts.

02

Bridge → app

JSON-RPC over a local UNIX socket. No network, no daemon, no auth ceremony — same user, same machine.

03

You decide

The card surfaces in your notch. Click ✓, click ✗, or let auto-approve handle it. Danger patterns always wait for you.

04

Agent moves on

Decision flows back as permissionDecision. Claude honors it natively; no glue code in your prompts.

Agent support

Built around Claude Code's hook contract today. Adapter layer ready for more.

● Claude Code Codex (planned) Kimi (planned) Cursor agents (research) Aider (research) OpenCode (research)

FAQ

Does Agent Island send anything to the cloud?
No. Every byte stays on your Mac. The bridge talks to the app over a UNIX socket at /tmp/agentisland.sock with mode 0600. There's no analytics SDK and no crash reporter.
How does it intercept Claude Code's permissions?
It registers a PreToolUse hook in ~/.claude/settings.json that pipes each tool call through a local bridge. The app holds the request, waits for your decision (or for auto-approve to fire), and returns hookSpecificOutput.permissionDecision which Claude Code honors natively.
What if I rebuild the app — do I have to re-grant permissions every time?
No, as long as you run ./scripts/setup-signing-identity.sh once. macOS TCC binds Accessibility/Automation grants to a stable codesign identity; without one, every ad-hoc rebuild rotates the hash and invalidates the grant.
Will it block dangerous commands?
Yes — DangerousCommand.swift matches a list of patterns (rm -rf, dd, mkfs, curl|sh, git reset --hard, force pushes, SQL drops, fork bombs, and more). Matching commands always wait for a human, regardless of your auto-approve setting.
Can I run multiple Claude sessions at once?
Yes. The session aggregator keeps a card per session_id, with a filter bar in the popover to scope by project or source.
Why is this free?
It scratches an itch. The code is MIT-licensed and small enough to read in an afternoon. Open source forever.