Who is waiting, on what
Blocked sessions first, oldest wait at the top, with what each one needs from you: a permission, an answer, a sandbox prompt.
Six Claude Code and Codex sessions, and every one wants something: a permission, an answer, a nudge. bogyman watches the sessions you already started and keeps one list of who is blocked, on what, and since when. Then it takes you straight there.
brew install soleo/tap/bogymanWhat it does
It answers the questions you keep switching tabs to answer yourself, and never touches your terminals, tmux or worktrees unless you ask it to.
Blocked sessions first, oldest wait at the top, with what each one needs from you: a permission, an answer, a sandbox prompt.
focus selects the terminal tab, attaches a background Claude session, brings Claude Desktop forward, or resumes a session that ended.
send delivers a one-line answer. Claude Code reads it between tool calls, or starts a turn with it when idle.
The optional daemon keeps the list current and sends a desktop notification when a session blocks or fails.
Every command takes --json and answers with the same envelope, failures included, so a script or a supervising agent can depend on it.
A haunted day
bogyman status prints one line, like ⏳2 ▶3 ✓1, from its cache, so it fits a shell prompt, tmux or a status bar.bogyman waiting lists who is blocked; bogyman focus takes you to the top one.bogyman ls --json and do the nudging.The CLI
A table on a terminal, tab-separated text in a pipe, JSON when you ask. Exit codes you can branch on: 0 ok, 3 nothing waiting, 4 vendor command missing.
bogyman ls--watch redraws each second; --all adds failed and stopped ones.bogyman waiting&& chains.bogyman status--format to template it.bogyman focus <id>bogyman send <id> "msg"- reads it from stdin.bogyman show <id>bogyman installuninstall removes only its own.bogyman daemondaemon install runs it at login with launchd or systemd.bogyman doctorUnder the hood
bogyman reads what the agents already write down. It never returns a decision to a hook, so it can’t slow down or block an agent.
bogyman install registers bogyman hook on the Claude Code and Codex hook streams. Each event appends one row to a local SQLite file and exits. Hooks never print, so a broken one can’t leak into a transcript.claude agents --json, Codex rollouts and Claude Desktop’s session index add the model, tokens, the exact reason a session waits and its last reply.--json all read that one record.Coverage
Only what is on your disk. A session it can’t see stays off the list rather than showing up as a guess.
| Surface | Coverage | Source |
|---|---|---|
| Claude Code, terminal tab | Full | hooks + session files |
Claude Code, agent view or --bg | Full | claude agents --json |
| Claude Desktop, local Code tab | Full | hooks + session index |
| Codex CLI | Full | hooks + rollouts |
| Claude Desktop, Code tab over SSH or WSL | Planned | session index |
| Cowork, local | Not shown | inside Cowork’s VM |
| Cloud sessions, chat tabs | Not shown | not on disk |
Privacy
~/.local/share/bogyman.redact = true keeps only the state.focus and send run only when you ask.install writes a .bogyman-bak first and merges its entries. uninstall removes only bogyman’s.why I built it
“The agents got CLAUDE.md, MCP, skills and a seventeen-hour horizon. The person supervising them got a row of tabs.”
The job left to the person is supervision. bogyman is the thin layer that sits beside whatever you already use and answers one question well: who is waiting on me?
Read the story: Two Tools for the Human in the Loop →Free and open source, for macOS and Linux. Works with Claude Code and Codex.
curl -fsSL https://raw.githubusercontent.com/soleo/bogyman-cli/main/install.sh | shbrew install soleo/tap/bogymanThen run bogyman install to wire up the hooks and bogyman doctor to check that events arrive.
What’s new in v0.3.0 · All releases · bogyman site
bogyman is free. If it saves you time, buy me a coffee.
Also from me: Tinycap, a tiny macOS app that turns your screen into small files for a pull request.