{"slug": "running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t", "title": "Running three coding agents at once is easy. Noticing when they need you isn't.", "summary": "A developer reports that running multiple coding agents in parallel, such as Claude Code, Codex, and Cursor, introduces a new bottleneck: the delay between when an agent needs human input and when the developer notices. The developer found that all major agents support hooks, and the permission hook can be used to create a blocking filter that allows quick yes/no answers without switching context. This approach helps avoid wasting metered time windows and improves overall throughput.", "body_md": "Coding agents have genuinely changed how I work, and I don't think that is a controversial thing to say any more.\n\nClaude Code, Codex, Cursor, Gemini CLI, Qwen, opencode - most people I know are using two or three of them, not one, and using them on different things at the same time.\n\nOne session refactoring an API. One writing the landing page. One chewing through a migration.\n\nThat is a real change in throughput. It is also where a new problem shows up, and it is not the one people talk about.\n\nOnce you have handed an agent a real task, the correct thing to do is leave it alone.\n\nSo you do. You switch to the other session. You answer a message. You open a browser tab and, if we are being honest, sometimes that tab is not work.\n\nThis is not a discipline failure. It is what the tool is for. If you had to sit and watch it type, it would not be saving you anything.\n\nThe trouble is what happens when it comes back.\n\nIt finishes. Or it stops to ask whether it can run a command. Or it hands you a plan and waits for a yes.\n\nAnd you miss it, because you are three windows deep in something else.\n\nTen minutes later you tab back and find it has been sitting there the whole time, waiting on a one-line answer you could have given instantly.\n\nIf it were just ten wasted minutes, fine. It isn't.\n\nThe subscriptions these agents run on are metered in time windows, not in requests you spend when you feel like it.\n\nClaude's plans work on a rolling five-hour window with a weekly cap on top. Codex is similar in spirit.\n\nThe window is running whether you are using it or not.\n\nSo an agent that sits idle for ten minutes is not costing you ten minutes of your day.\n\nIt is costing you ten minutes of a window you already paid for, and that you cannot get back.\n\nDo that a handful of times in an afternoon and you have quietly moved a chunk of your work into the next window - which means over a week you get less done, not more, even though every individual task felt fast.\n\nThat is the thing I find genuinely worth optimising. Not the model. Not the prompt.\n\nThe gap between \"the agent needs you\" and \"you noticed\".\n\nAnd that gap is getting harder to close, not easier. Focus is not exactly abundant right now. Running several agents in parallel demands more attention switching, at precisely the moment most of us have less to give.\n\nI tried the obvious thing first.\n\nA notification tells you something happened and then makes you go somewhere else to deal with it. It is a second thing to dismiss, not a solution.\n\nWorse, once you are getting them from three sessions, you start ignoring them, which puts you back where you started with extra noise.\n\nWhat I actually wanted was to answer without leaving what I was doing. Not \"go look at the terminal\". Just: yes, no, here's the answer.\n\nWhen I went looking, the useful discovery was this: every one of these agents already tells you what it is doing, if you ask it to.\n\nThey all support hooks. You register a program, the agent runs it at lifecycle moments - session started, tool about to run, needs permission, finished - and it hands your program a JSON object on stdin describing what is happening.\n\nThe important one is the permission hook, because it *blocks*.\n\nThe agent runs your program and waits. Whatever JSON your program prints on stdout is the decision. Print an allow and the command runs. Print a deny with a reason and the model gets told why.\n\nThat is the whole mechanism. No plugin API, no daemon, no SDK. Your program is a filter, and for the length of that call it is the thing standing between the agent and the command.\n\nThe details differ more than you would hope - different config files, different event names, different response envelopes, different timeout units, and one of them treats empty output as \"yes\" rather than \"no decision\", which is a fun afternoon.\n\nopencode does not use hooks at all; it already runs a local HTTP server for its own interface, so you subscribe to its event stream and answer over HTTP instead.\n\nBut the shape is the same everywhere: **one process can see every agent you are running, and can answer for you.**\n\nOnce that is true, the approval is no longer stuck to the terminal window the agent happens to live in. You can put it anywhere.\n\nI built this for myself, as a Mac app.\n\nEvery running session lives in the MacBook notch - which, on most Macs, is doing nothing at all, and is the one part of the screen your eyes already cross a hundred times an hour.\n\nEach session shows what it is doing right now and how much of its context is left.\n\nWhen one needs you, the notch opens right there: the actual command, a warning if it looks destructive, and Allow / Deny / Answer.\n\nPressing Allow replies to that blocked hook directly. It does not focus your terminal and it does not synthesise a keystroke - a synthetic keystroke that lands in the wrong window is worse than doing nothing.\n\nWhich means the failure mode above stops happening. You can be distracted. You can be in a browser, in Figma, in a meeting window. The thing that needs you appears where you are already looking, and answering it costs you one click instead of a context switch.\n\nIt's called [Crew Tower](https://crewtower.app) if you want to look at it. It also shows how much of your Claude or Codex quota is left, for the same reason the rest of it exists.\n\nI'm curious whether other people are hitting this the same way.\n\nIf you run more than one agent at a time: how do you currently notice when one is waiting on you - and have you ever measured how much of your window goes to sessions sitting idle?", "url": "https://wpnews.pro/news/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t", "canonical_source": "https://dev.to/altansaid/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isnt-3dif", "published_at": "2026-08-21 14:54:43+00:00", "updated_at": "2026-08-21 15:15:29.163837+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["Claude Code", "Codex", "Cursor", "Gemini CLI", "Qwen", "opencode"], "alternates": {"html": "https://wpnews.pro/news/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t", "markdown": "https://wpnews.pro/news/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t.md", "text": "https://wpnews.pro/news/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t.txt", "jsonld": "https://wpnews.pro/news/running-three-coding-agents-at-once-is-easy-noticing-when-they-need-you-isn-t.jsonld"}}