For Claude Code on macOS

Claude asks.
You press ⌘↩

stew, short for steward, is a small floating panel for Claude Code. It asks you for permission, asks you a question or tells you something. It never takes keyboard focus from what you are typing.

brew trust --cask koode/apps/stew &&
brew install --cask koode/apps/stew

The Mac tool is free and open source. Needs macOS 14 or later and Claude Code. Or use the install script.

Demo

Try it with your own keys

Three Claude Code sessions are waiting for you. Answer with ⌘ plus a key, or click. The notes window keeps focus the whole time, like your real work would.

Claude Code
refactor auth middleware ~/code/web-app
●Bash(git push --force origin main)
⎿Auto mode blocked this: Destructive or Unwanted Actions
offline mode ~/code/mobile-app
●AskUserQuestion
⎿Where should the app keep its offline cache?
refactor auth middleware ~/code/web-app
●Bash(stew notify "Build finished: 25 of 25 tests passed")
Notes
Sunday stew
2 onions
4 carrots
1 kg beef
1 bay leaf
Bread for dipping
Focus stays here
5
QWRT
ASF
XCV
⌘
67890
YUIP
HJK
NM,/
⌘

Walk away skips to the last 3 seconds, so you can see what Claude is told when nobody answers. On Windows or Linux, Ctrl works as ⌘. If your browser keeps a key for itself, click the key instead.

How it works

Built for Claude Code

stew joins Claude Code in three places. Each one is optional.

When auto mode blocks a call

  1. Auto mode reviews each call as usual. If it allows the call, stew never sees it.
  2. If auto mode blocks it, stew shows you the command, the reason and Claude's last message.
  3. Approve, and Claude retries that exact call once. A changed call goes back to auto mode.

When Claude has a question

Claude Code's own questions show in stew when nobody is at the terminal: background jobs and remote sessions. A session you are typing in keeps asking in the terminal.

Your answer goes back to Claude as if you had typed it there.

When Claude wants to tell you

The stew skill tells Claude to reach you when you are probably not watching: long tasks, failures and decisions that block progress.

Edit the skill to change when sessions use it.

Allow more…

Press ⌘G on a blocked call to skip the question next time. Pick this command, a prefix such as npm run deploy *, or auto mode's category for it.

  • Approvals apply to one project.
  • Chained commands never match a saved approval.
  • Secrets show as •••• and become * in a saved rule.
  • stew approvals lists every standing approval, with Revoke.
ChoiceKeysWhere it is kept
For 1 hour⌘↩In stew. It lets matching calls through for an hour.
Always⇧⌘↩In the project's Claude Code settings, so Claude Code enforces it.
1:00

Nobody waits forever

Each request gets 1 minute by default. The clock starts when the request reaches the front, and pauses while you write a note.

If you don't answer, Claude is told you may be away, so it can go another way or ask again later. ⌘E adds 2 minutes, as often as you like.

Confetti, if you want it

Turn it on, and every approval gets a small burst of confetti. It does nothing else.

Keys

Every answer is ⌘ plus a key

Nothing answers on plain keys, Space or Return, so a panel can show up while you type.

  • Keys work only while a panel is visible.
  • Presses in the first 0.5 seconds are ignored.
  • Keys follow your keyboard layout, also Dvorak and Colemak.
  • You can change every key in stew settings.
⌘↩Approve, or OK on a notification
⌘DDeny
⌘OWrite a note, or answer "Other"
⌘GAllow more…
⌘EMore time, 2 minutes
⌘1to⌘4Pick an option
⌘[or⌘]Previous or next question
⌘.Dismiss without answering
⇧⌘.Dismiss everything waiting
⇧⌘↩Approve past a hard deny, or Always in Allow more…

Safety and privacy

stew asks. Claude does the work.

It never runs commands

Claude runs them with its own tools, so Claude Code's permissions, sandbox and transcript still apply.

One approval, one call

An approval lets one identical call through, in the session that asked, within 15 minutes.

It runs on your Claude subscription

The risk check uses claude -p on your claude.ai login. It removes API keys from its environment, so it never bills an API account.

It stays on your Mac

The socket, your approvals and the log are local files. The socket is readable only by you.

It cannot approve itself

stew accepts answers only from its own panel. A caller cannot answer its own request.

Secrets stay hidden

Tokens in a command show as •••• until you reveal them, and become * in any saved rule.

Beyond Claude Code

Works with anything that runs a command

stew is a command line tool, so any agent or script can ask you: other coding agents such as Codex CLI, Gemini CLI, Cursor's agent or Aider, a shell script, a Makefile or a long job. Every answer prints as one line of JSON, and the exit code says what you chose.

Ask from a script

stew permit waits for your answer and exits with it, so a script can branch on the exit code.

stew permit --action "Deploy to production" \
  --reason "All 212 tests passed." --command "make deploy"
case $? in
  0) make deploy ;;
  1) echo "Denied, not deploying" ;;
  *) echo "No answer, not deploying" ;;
esac
0Approved or answered
1Denied
2Dismissed
3Timed out
4Error
5A secret the user will enter later

Tell an agent to use it

Put one line in the agent's instructions, and it asks you in stew instead of in its terminal:

When you need a value from me, run stew input "<your question>" and use the "text" field of the JSON it prints.

The answer comes back as one line:

{"id":"…","status":"answered","text":"example.com"}

The auto mode fallback, the hooks, the skill and late answers are Claude Code features. Other tools get the panel, the keys, the time limit and the JSON answer.

Install

One line in Terminal

The first command lets Homebrew load stew from Koode's tap; the second installs stew, starts it in the background and adds the Claude Code skill. stew keeps itself up to date, and Homebrew sees each new version too.

brew trust --cask koode/apps/stew &&
brew install --cask koode/apps/stew
No Homebrew?
curl -fsSL https://releases.stewcli.com/install.sh | bash
  1. Check that it works
    stew notify "stew works" --body "Close this with ⌘. or ⌘↩"
  2. Ask in stew when auto mode blocks a call
    stew hooks install
    Or open stew settings, then Claude Code, and choose Install.
  3. Change keys, time limit or position
    stew settings
macOS
14 or later
Claude Code
For the skill, the auto mode hooks and the risk check
Mac tool
Free, MIT license

Away from your Mac? The iPhone app shows a waiting request as a notification you can answer. Requests and answers are end-to-end encrypted (E2EE) between your Mac and your phone. iPhone app (beta) on TestFlight

FAQ

Questions

Does stew run commands?

No. stew only shows the request and passes your answer back. Claude runs the command with its own tools, under Claude Code's permissions.

What happens when I am away?

After 1 minute, Claude is told you did not respond in time. For a blocked call it treats that as a denial and goes another way. For a question it picks a safe choice that does not need your answer.

Will it catch keys I meant for another app?

Only ⌘ plus a stew key, and only while a panel is visible. Presses in the first 0.5 seconds are ignored. Your terminal gets its ⌘D or ⌘1 again as soon as the panel closes.

Do I need auto mode?

No. Without the hooks, Claude can still call stew through the skill: for permission, for a question or for a notification.

Does it cost anything?

The stew Mac tool is free and open source under the MIT license. The optional risk check runs on your Claude subscription, not on an API key.

Why is it called stew?

It is short for steward: it looks after what Claude Code asks while you keep working. And the pot is there so you can let him cook.

Can I answer from my iPhone?

Yes, with the iPhone app (beta) on TestFlight. When a request stays open while you are away from your Mac, stew sends it to your phone as a notification: Approve, Deny or More time. The request and your answer are end-to-end encrypted between your Mac and your phone, so the relay that passes them on cannot read them. Pair a phone in stew settings, then iPhone.

Does it work on Windows or Linux?

No. stew is a macOS app and needs macOS 14 or later.