A few months ago my day looked like this: four terminal tabs, Claude Code in two of them, Codex in the other two, and me scrolling. Not coding, not reviewing, scrolling, through hundreds of lines of "Let me read the test helpers" and "Running it again", trying to find out whether the thing was done, stuck, or asking me something.
The agents were fast. I was the bottleneck. So I changed how I work with them, and then built a tool around it. Here's what actually helped, whether or not you use the tool.
1. One task, one worktree
Two agents in one checkout will eventually overwrite each other. Not with an error: session A fixes a file, session B (working from what it read 20 minutes ago) rewrites the same file, and A's fix is quietly gone.
The fix is boring and total: every task gets its own git worktree and branch, created from origin/main.
git worktree add -b agent/fix-flaky-auth ../wt/fix-flaky-auth origin/main
cd ../wt/fix-flaky-auth && claude "fix the flaky auth test"
Overlaps now show up as a merge conflict in a PR, which is loud, instead of a lost edit, which isn't. It also means you can throw a task away by deleting a folder.
2. Let agents ask, and put the questions in one place
Most of my scrolling was looking for the moment an agent needed me: "Isolate the mock clock per test, or switch to real timers?" If you miss it, the agent either guesses or waits forever.
Give the agent an explicit way to ask (an MCP tool like ask_user works with Claude Code, Codex and opencode), and route every question into one list. Now "what needs me?" is a list with one or two items, not four transcripts.
3. Don't read the transcript, read a report
This was the big one. At the end of a task I want to know five things:
- what changed (the real diff, not the agent's summary of it)
- whether the tests pass
- what it decided, and why
- what it couldn't do
- what to do next
So I ask the agent to end with a small structured report (a hero line, a diff, a test result, a callout, next steps) instead of prose. The diff comes from the agent's own tool calls, so it's what actually changed on disk. Reading that takes about 20 seconds. If something looks off, the full transcript is still there, one click away.
4. Ship from the report
If the report looks right, the next step is always the same: commit, push, open a PR, watch CI. That should be one click on the report, not a context switch. And when CI goes red, the follow-up ("fix the failing check") goes back to the same agent, in the same worktree, with its context.
The tool: wisp
I put all of this into wisp, free and open source (MIT):
- Runs Claude Code, Codex, opencode, Cursor, Copilot and Grok CLIs, using the subscriptions you already have. Switching is a dropdown, or Auto picks one per task from what worked before.
- Every task in its own worktree, in the background, with a live one-line status.
- Agents get an
ask_usertool; questions land in Needs you, and on your phone. - Each run ends with a one-screen report: diff, tests, decisions, next steps.
- Ship it commits, pushes and opens the PR; Merge squash-merges and syncs your local main.
-
Take over reopens the exact session (
claude --resume,codex resume) in a terminal when you want the wheel back.
Try it locally:
npx wisp-agents
# or from any repo:
wisp "fix the flaky auth test"
Or with nothing to install: grid.trywisp.dev gives you your own wisp on a server (sign in with GitHub), so tasks keep running with the laptop closed and you can answer from your phone. It's free while in preview.
What I'd love to hear
I'm looking for people who run agents every day to try it on one real task and tell me where it gets in the way. Comments here, or issues on GitHub, both work, and I'll fix what you hit this week.
How do you keep up with several agents at once?

Top comments (0)