When Claude Code stops to ask permission, the request appears at the top of your screen — answer it there and the agent carries on. Run several at once and they all report to the same place, so no session sits blocked while you are looking at a different terminal tab.
The card shows the tool, the command, and a red/green diff for edits. Allow or deny with a click, or ⌥↩ and ⌥N from any app.
One dot per running session, tinted by which CLI it is, with a context-usage ring and a todo count. Nothing else, until something needs you.
⌥Space opens a composer aimed at whichever session most needs you. Type or dictate; it is delivered through tmux, or typed into the terminal for you.
Live model, context percentage and spend per session — and a history of what each project actually cost you this week.
Depth differs per tool, so it is stated per tool. The app says the same thing in its own Settings rather than implying more than it does.
| What you get | Tools |
|---|---|
| Permissions + status | Claude Code, Gemini CLI, Crush |
| Live session API | OpenCode (including OpenCode Zen) |
| Status events | Codex, Qwen Code, iFlow, Factory Droid, Kimi |
| Detected only | Cursor, Goose, Amp, Aider, Cline, DeepSeek (dsh) |
GLM/Zhipu setups run the real claude binary, so they work through the Claude Code integration.
⌥P opens the console: every live session on one screen, one row each, columns that stay put whether or not a session has anything to put in them.
A session asking for something tints its row and grows a line with the command, the countdown, and Deny/Allow. Several agents can be asking at once; you see all of them, not one at a time.
⌥↑ and ⌥↓ move between rows, ⌥↩ allows or opens a composer, ⌥N denies, ⌥S stops. The keys are printed along the bottom, and they change with what the selected row can actually do.
The header says what is waiting on you, what is running and what it has cost; the footer reports the day. Whatever needs an answer sorts to the top, and past five sessions the rows group under their project with a subtotal each.
Cost is never invented: it is whatever the CLI reports about itself. Claude Code and OpenCode report one; the rest do not, and their rows say so rather than printing $0.00.
The part that saves you the context switch is not the paid part, and it is not rationed either: if a second session stops to ask you something, you still get the card and can still answer it here. What Free does not do is show you all of them at once — the list holds one. Nothing expires and nothing starts asking.
DownloadPayment is handled by Polar, which is the merchant of record and charges in USD with tax included. You get a licence key by email; the same download becomes Pro once you paste the key into Settings → Licence. One licence covers three Macs and can be moved between them. If it does not fit the way you work, ask for a refund within 14 days and you'll get one — you do not have to argue that the app is broken — write to support@tikistudios.io.
Every app this size eventually has to answer this, and a plan you only learn about on the day it ships is not a plan, it is a surprise. So: two lines, and no third one.
One payment, or one sponsored line. Pro is $49 once — not a subscription, not a renewal, not a licence that stops working next year. The free tier is paid for the other way: an occasional sponsored line, from a named sponsor who bought the slot directly. That is the whole business. There is no third revenue line hiding in the app, and there is nothing to sell about you, because nothing about you leaves the machine.
Nothing is running yet. There is no advertising in AgentIsland today and nothing has been shown to anyone. What exists already is the machinery and the switch. We are going to run it — a stated intention, not a maybe — once there are enough people using the app for a sponsor's money to be worth asking for.
Buying the app turns them off. That is what the $49 buys, alongside the features: a switch in Settings that ends sponsors for good, with no reminders afterwards. On the free tier there is no such switch, and saying so plainly is better than a greyed-out control that looks broken.
Nobody is paid to look at them. An earlier version of this page promised the opposite — that sponsor money would come back to you as credit. It was built and then removed, because paying people per impression is what ad networks call invalid traffic, and a business that has to police its own users for fraud is a worse deal for everyone than a cheaper app. So the slot earns you nothing, and it is honest about that.
And it stays out of the way. One sponsored line beneath your own sessions. Never over a permission request, never while an agent is working, at most once every four hours, and dismissing one buys a full day of quiet. If it could appear in the moment an agent needs you, it would have deleted the reason the app exists — so it cannot.
Everything runs locally. There is no account to create, and no telemetry unless you switch it on — in which case Settings prints the exact list of what would be sent, next to the switch. Prompts, commands, tool inputs, repository paths and transcripts are never sent anywhere, under any setting. That is the app. This website counts page views with Cloudflare Web Analytics, which sets no cookie and cannot tell who you are; the privacy page lists exactly what it records.
Every file the app writes to your home directory is named in the interface before you agree to it, backed up once before the first edit, and restored when you remove the integration — including your own statusLine.
That is the whole point of this app. Claude Code stops on a permission request and waits silently, which you often notice minutes later. AgentIsland puts the request at the top of your screen the moment it fires, with a counter showing how long the CLI has been blocked.
Yes. The card carries the command and Deny/Allow, so you answer from whatever app you are in and the agent carries on. ⌥↩ allows and ⌥N denies from the keyboard, anywhere.
Yes. On a Mac or an external display without a physical notch the app draws its own island in the same place, so it behaves identically.
Claude Code, Gemini CLI and Crush get full permission cards; OpenCode is read through its live session API; Codex, Qwen Code, iFlow, Factory Droid and Kimi report status events; a few more are detected only. The table above states the depth per tool rather than implying more.
The free tier is not a trial. There is no time limit, no card and no account: permission, question and plan cards are unlimited on it, for as long as you use it, and they are never rationed by session — if a second Claude Code session stops to ask you something, the card still reaches you and you can still answer it. What Free holds back is the overview: the list shows one session at a time. Pro is $49 once — no subscription — and puts every session in view at once, adds the keyboard cockpit, cost history and the other CLIs, and gives you a switch to turn off the sponsored line that pays for the free tier — Pro sees it too unless you flip that switch in Settings. It is for people running several agents in parallel, not a gate on the basic thing.
Because an allow rule is a prefix match on the whole command string, so cd frontend && npm test does not match Bash(npm test:*) — it starts with cd. The full explanation is here, including where the rules are actually read from and why bypass mode does not bypass hooks.
Start with claude --debug hooks, which shows whether your hook is ever invoked and so splits a config problem from a script problem in one line. The rest is here: the unquoted path with a space in it, the matcher that misses, and why a hook must fail open rather than exit non-zero.
Two reasons, usually. Claude Code only fires its notification when it thinks you are away from the terminal, so watching the window is a test designed to fail; and a desktop notification is sent by default only in Ghostty, Kitty and iTerm2 — everywhere else you need "preferredNotifChannel": "terminal_bell". The settings, plus the traps (tmux swallows it, iTerm2 needs forwarding switched on) — and why "done" turns out to be three states rather than one.
No. Everything runs locally, there is no account, and prompts, commands, tool inputs, repository paths and transcripts are never sent anywhere under any setting.