Hollow

Guide · Claude Code and Codex on Mac Know when Claude Code
or Codex needs you.

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: a notification with its hooks

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: a notification at the end of each turn

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.

What a notification does not tell you

Which session

With three projects open, “Claude Code needs you” does not say which one, nor which tool it wants to run.

That it still waits

The banner leaves after a few seconds. Back from a meeting, nothing says an agent has been waiting for twenty minutes.

Where to go back

A click on the banner opens Script Editor, not the terminal or the conversation of the agent.

The same, in the notch, with Hollow

Hollow reads the same hooks and shows each Claude Code and Codex session in the notch of your MacBook, like a Dynamic Island.

Every session, its state

Waiting for a permission (with the tool), your turn, or running: per project, Claude Code and Codex side by side.

A neon that stays on

As long as an agent waits for you, the notch glows. It goes out when you come back to the agent.

One click back

To the window of Terminal, iTerm2, Ghostty, Warp or VS Code, or to the conversation in the Claude or ChatGPT app.

Questions

Which Claude Code events can notify me?

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.

Does Codex have hooks too?

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.

Do I have to set the hooks up for Hollow?

No. Hollow adds its hooks to Claude Code and Codex by itself, after a backup of their settings, and keeps your other hooks.

Does it work in the Claude and ChatGPT apps?

Hollow follows Claude Code in the terminal, your editor and the Claude app, and Codex in the ChatGPT app and the terminal.

What does Hollow cost?

Hollow is free; the Claude Code and Codex agents are part of Hollow Pro, €1.99 once, with lifetime updates.

More in Hollow