Why your coding agent's timeout resets every time it retries A developer released version 20.13 of oh-my-agent (OMA), a CLI and skill set for orchestrating coding agents like Claude Code and Codex in parallel, adding a session-wide execution budget. The feature replaces per-process timeouts with a single absolute deadline stored per session and inherited by child CLIs via the OMA_EXECUTION_DEADLINE environment variable, so retries and resumes cannot extend the run. On expiry or cancellation, OMA stops admitting new work, terminates its process groups with SIGTERM then SIGKILL, and exits with code 124 on timeout or 130 on cancel. You start three coding agents on a task before lunch and wrap each one in timeout 1800 . Thirty minutes should be plenty. When you come back, one of them is still going: it failed its tests, the wrapper retried, the retry ran the checks again, and every new process got its own fresh 30 minutes. Nothing was broken. The limit just applied to each process, while the thing you wanted to bound was the whole run. Ctrl-C has a similar gap. If your orchestration script starts each agent CLI in its own process group which you want, so one agent's crash does not take the others down , killing the script does not reach those groups. The agents keep editing files and spending tokens with nobody watching. An agent run is a chain of steps that each look short on their own: A timeout on any one of those does not bound the sum. What does bound it is a single absolute deadline, written down when the session starts, that every later step reads instead of starting its own clock. I build oh-my-agent OMA , a CLI and skill set for running coding agents like Claude Code and Codex in parallel. Version 20.13 added a session execution budget for exactly this. You set it once in .agents/oma-config.yaml : session: execution: timeout seconds: 1800 or per command: oma agent parallel tasks.yaml --timeout-seconds 1800 oma agent resume