Which session
With three projects open, “Claude Code needs you” does not say which one, nor which tool it wants to run.
An agent asks for a permission while you read something else, and waits for ten minutes. Here is how to be told, with a few lines in each agent’s settings, then with the notch of your Mac.
Claude Code runs a command on its events. Notification fires when it asks for a permission or waits for your input, Stop when it finishes its turn. Add this to ~/.claude/settings.json, next to your other settings:
{
"hooks": {
"Notification": [
{ "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code needs you\" with title \"Claude Code\"'" }] }
],
"Stop": [
{ "hooks": [{ "type": "command", "command": "osascript -e 'display notification \"Claude Code is done\" with title \"Claude Code\"'" }] }
]
}
}
Start a new Claude Code session: the next permission request shows a macOS notification. The first time, macOS may ask you to allow notifications from Script Editor.
Codex runs the program set as notify at the end of each turn, in the CLI as in the ChatGPT app. Add this line at the top of ~/.codex/config.toml:
notify = ["osascript", "-e", "display notification \"Codex is done\" with title \"Codex\""]
Codex adds the event as JSON after the arguments: a script can read it to show the project or the last message.
With three projects open, “Claude Code needs you” does not say which one, nor which tool it wants to run.
The banner leaves after a few seconds. Back from a meeting, nothing says an agent has been waiting for twenty minutes.
A click on the banner opens Script Editor, not the terminal or the conversation of the agent.
Hollow reads the same hooks and shows each Claude Code and Codex session in the notch of your MacBook, like a Dynamic Island.
Waiting for a permission (with the tool), your turn, or running: per project, Claude Code and Codex side by side.
As long as an agent waits for you, the notch glows. It goes out when you come back to the agent.
To the window of Terminal, iTerm2, Ghostty, Warp or VS Code, or to the conversation in the Claude or ChatGPT app.
Notification, when Claude Code asks for a permission or waits for your input, and Stop, when it finishes its turn. Both run the command you set in ~/.claude/settings.json.
Yes. Besides notify at the end of a turn, Codex has hooks in ~/.codex/hooks.json once the hooks feature is on in ~/.codex/config.toml; it asks you to review new hooks once.
No. Hollow adds its hooks to Claude Code and Codex by itself, after a backup of their settings, and keeps your other hooks.
Hollow follows Claude Code in the terminal, your editor and the Claude app, and Codex in the ChatGPT app and the terminal.
Hollow is free; the Claude Code and Codex agents are part of Hollow Pro, €1.99 once, with lifetime updates.