{"slug": "codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions", "title": "Codex fixed CI at OpenAI for 1,000 hours on a 200-word prompt: 5 config decisions that held it together", "summary": "An OpenAI engineer on the engineering acceleration team described at DevDay a Codex agent that worked on failing CI tests for six weeks, logging over 1,000 hours, opening more than 100 pull requests a week, pushing over 1,000 commits, merging 213 of its own fixes and sending more than 600 Slack messages to coordinate landings with humans. The run started from a roughly 200-word prompt containing no code, relying instead on an outcome statement plus hard boundaries in an AGENTS.md file covering allowed actions, off-limits operations and a note-keeping habit. The engineer said the agent verified each fix by running the tests and letting CI confirm, and OpenAI's developer experience team advised giving each outcome its own thread.", "body_md": "At OpenAI's DevDay, an engineer on the engineering acceleration team described a Codex run that worked on failing CI tests for six weeks, over 1,000 hours total. It opened more than 100 pull requests a week, pushed more than 1,000 commits, merged 213 of its own fixes, and sent over 600 Slack messages to coordinate landings with humans ([Codex Insider has the full session writeup](https://codexinsider.ai/articles/codex-agent-merges-over-200-fixes-to-failing-automated-tests-at-openai-i-b7fe85/)).\n\nI have read a lot of agent runs described in public. This one is worth your attention for one specific reason: the starting prompt was about 200 words and contained no code.\n\nThe prompt told the agent which repo to work on, left it to figure out how to run the full test suite, and set rules for messaging colleagues and using CI resources. That is it. No code samples, no library choices, no step-by-step plan.\n\nThe speaker's contrast is the part I keep thinking about. Last year's equivalent prompt, for a similar job, was long enough to split across multiple slides. It carried code, library decisions, and a plan a human had to review before work started. This year the plan moved out of the prompt entirely, and the run survived six weeks on outcome plus boundaries.\n\nThat matches what I see in my own agent work. A prompt is a conversation, fragile and easy to over-stuff. The [300-line instruction budget](https://dev.to/piekwerk/the-300-line-instruction-budget-what-actually-fits-in-your-agent-config-4j7d) exists because everything you cram into a prompt competes with everything else. An outcome statement plus hard boundaries is the smallest prompt that can steer long work.\n\nThe advice from OpenAI's developer experience team was blunt: give each outcome its own thread. A thread that is about \"fix failing tests in this repo\" stays coherent for weeks. A thread that is about five different things degrades fast.\n\nThe `/goal` mechanism exists for exactly this. It tells Codex to keep going until the stated task is done, rather than stopping after each unit of work and waiting for the next instruction.\n\nThe session described an AGENTS.md file that listed where the tests are, what the agent is allowed to do, what is off-limits, and a standing request to keep notes on what it has done and what is left to explore. The shape looks roughly like this:\n\n```\n# CI repair agent\n\n## Where things are\n- Test suite: `./scripts/run_all_tests.sh` (figured out, verify before trusting)\n- Failing test report: CI dashboard, nightly job\n\n## Allowed\n- Fix test logic and product code behind a failing test\n- Open PRs, one per fix\n- Message the test owner in #ci-triage before touching their suite\n\n## Off-limits\n- Never delete or skip a test to make it pass\n- Never force-merge; a human merges\n- Max 3 concurrent CI jobs at a time\n\n## Notes\n- Append what you tried, what worked, what is left to explore\n```\n\nI invented that file's wording, to be clear. The session only described its contents. But the categories line up with what a long-running agent actually needs: pointers, permissions, prohibitions, and a memory habit.\n\nThe off-limits section is doing the heaviest lifting. The agent hit cases where deleting a failing test looked like a valid fix, and the rule was to spin up a second agent to review that deletion before a human ever saw it. It did the same on a non-deterministic floating point failure in a GPU test, traced it to one specific node, taught itself to rerun the test there, and then asked the owning researchers whether the node was broken hardware or a real bug. Boundaries like that are what make a 1,000-hour run survivable instead of a cleanup project.\n\nEvery fix was checked by the thing it was fixing. The agent ran the tests, pushed, and let CI confirm. The speaker's general advice was to give the agent a way to check its own work, end-to-end tests it can run on its own infrastructure, because self-reported success from a model is not evidence.\n\nThis is the decision most teams skip. They hand the agent a bug report and accept its summary of the fix. The six-week run worked because the feedback loop did not pass through anyone's opinion.\n\nThe run started as a single thread on a Sol model. Only after about four days did the engineer tell it to hand slow work to subagents. From then on the main thread triggered tests, collected failures, and talked to people, while subagents pulled code, fixed one failure each, and pushed back to CI.\n\nThe scale numbers tell you where the time went: just under half a million tool calls, more than 5,800 subagent sessions, and over 67,000 calls that were only waiting on CI. Waiting on CI was more than an eighth of all activity. The bottleneck was not the model, it was the world around it.\n\nThreads ran for three months on built-in compaction with no extra setup. If you want to know what a model keeps and loses across that kind of timescale, [we tested what survives compaction](https://dev.to/piekwerk/what-survives-compaction-testing-what-agents-remember-after-a-handoff-42ab) and the answer is less than you would hope, which is another argument for the notes habit above.\n\nThe engineer priced the run by working backwards from API pricing: about $32 an hour over six weeks, dropping to $16 an hour on GPT-6 Sol, with code review and CI resources on top. The cap that mattered was limiting how many CI jobs could run at once. Not a trust setting, a resource setting.\n\nThat is the right instinct. You cannot supervise 1,000 hours. You can make the environment small enough that unsupervised mistakes are cheap.\n\nPick a task that eats time, not one that needs taste. Give the agent a verifier it runs itself. Write the boundaries as a file, so they survive every compaction and every new thread. Plan to change the architecture in week one when the real bottleneck shows up. And cap the blast radius through the environment: concurrent jobs, PR permissions, who can merge.\n\nThe single-owner long run is one shape of agent work. The other shape showing up this month is team-scale, where several people's agents share one context layer, like [Cursor's multiplayer Projects](https://dev.to/piekwerk/cursor-projects-goes-multiplayer-5-rules-for-the-shared-agent-context-your-whole-team-inherits-16o8). Both shapes lean on the same foundation: small prompt, hard boundaries, own verifier. The 200-word prompt did not make the run safe. The structure around it did.", "url": "https://wpnews.pro/news/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions", "canonical_source": "https://dev.to/piekwerk/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions-that-held-it-53f", "published_at": "2026-11-11 11:08:36+00:00", "updated_at": "2026-11-11 11:24:19.511794+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "artificial-intelligence", "mlops"], "entities": ["OpenAI", "Codex", "DevDay", "Slack"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions", "markdown": "https://wpnews.pro/news/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions.md", "text": "https://wpnews.pro/news/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions.txt", "jsonld": "https://wpnews.pro/news/codex-fixed-ci-at-openai-for-1000-hours-on-a-200-word-prompt-5-config-decisions.jsonld"}}