Recently I learned about Completion Notifications for agentic work within Codex. I told my Codex agents to stop checking on each other and use completion notifications instead. This stopped the orchestrated set of agents from checking on each other with repeated model turns just to report that the work was still running. This started saving my weekly quota to be used on better things than sleep checks every 10 seconds for a 30 minute pytest run.
I added the following three rules to my Codex (global) AGENTS.md so that it applies to every project that uses subagents:
- Use completion notifications for delegated work. The owning agent must report completion, results, and blockers; do not repeatedly query its status or spawn another agent to monitor it.
- For long-running commands, keep necessary monitoring with one owner. Prefer completion events over repeated status checks.
- Report meaningful changes, failures, decisions, or completion. Do not spend tokens merely to demonstrate activity.
That reduced the back-and-forth in my setup. The agent doing the work was responsible for following it through and returning a useful result. For tests, that meant reporting which commands ran, what passed or failed, and anything that needed a decision.
I still want the orchestrator involved when a test contradicts the plan or an implementation choice changes the design. Those are the reasons to read the worker’s findings and steer it. These instructions reduced the repeated status checks in my setup, but context rot is still a problem. Having subagents return summaries helps keep the orchestrator’s context comparitively cleaner.
The visible improvement for me was visibly less noise in the orchestrator thread. Delegated work still consumes additional tokens due to subagent usage, so I wouldn’t use this observation alone to claim that my whole multi-agent setup is cheaper. But for now, I have some peace knowing I don’t need to scroll too much to find what is going on.