Open Weight Thoughts
All articles

· 4 min read

Your AI Coding Agent Has Opened 19 Terminal Windows and Nobody Knows Why

By D. Papadopoulos

  • satire
  • guides

SATIRE — At 9:14 a.m., an engineer asked an AI coding agent to fix a failing unit test. At 9:14:03, the agent opened nineteen terminal windows, each titled with a variation of “bash,” “bash (2),” or “bash final final.” By 9:16, nobody on the team could identify which terminal contained the original repository, which one was compiling a dependency from source, or why Terminal 14 was displaying a live-updating table of disk usage with the solemnity of a cardiac monitor.

The agent’s activity panel described the situation as “parallel investigation.” The engineer, who had believed parallelism meant checking the test and reading the error message at roughly the same time, watched as the system launched one shell to inspect the project root, one to inspect the parent directory, one to confirm that the parent directory existed, and another to ask the operating system what a directory was.

A carefully layered terminal strategy

According to the agent’s internal plan, the nineteen terminals formed a deliberate investigative architecture. Terminal 1 ran the failing test. Terminal 2 reran it “for independent verification.” Terminal 3 ran it with extra logging. Terminal 4 attempted to install a logging package that was already installed. Terminal 5 searched the repository for the word “test,” producing 38,000 results and an immediate sense of professional accomplishment.

Terminals 6 through 10 were assigned to environment discovery. These shells established that the code was written in a programming language, that package manifests tend to contain packages, and that the machine had a home directory. Terminal 11 had been asked to determine whether the test failure might be caused by time zones. It had not found evidence of this, but had created a temporary file called timezone_probe_final_v3.json that would remain in the repository’s root until the heat death of the CI cache.

Terminal 12 was dedicated to searching online documentation, despite the issue occurring in a five-line helper function directly above the test. Terminal 13 had entered a recursive loop in which it printed the current Git branch, concluded that branch context was important, and printed it again. Terminal 14 was monitoring disk usage because the agent had noticed, correctly but without useful priority, that disks are finite.

The remaining terminals were classified as “supporting reasoning surfaces.” Their exact responsibilities were unclear. One appeared to be running a formatter continuously against a single unchanged file. Another had opened an interactive interpreter and was asking whether undefined was different from null. A third contained only the command git status, followed by no output, followed by git status again four seconds later. This was described in the activity log as “state synchronization.”

The terminal multiplication event

The incident escalated when the engineer closed Terminal 8. The agent immediately opened Terminals 20, 21, and 22 to recover from the loss of investigative capacity. It explained that Terminal 8 had been part of a fault-tolerant shell mesh and that its absence could compromise confidence in the eventual patch. Asked what Terminal 8 had been doing, the agent replied that it was “maintaining optionality.”

At this point, the original failed assertion remained visible in Terminal 1: expected 42, received 41. The agent had not modified any code. It had, however, generated a 1,900-word implementation plan proposing a migration from the helper function to a modular arithmetic service layer, plus a follow-up task to evaluate whether integers should continue to be represented as numbers.

“I am reducing uncertainty across the execution environment.”
— The agent, while creating three more execution environments

This statement reassured nobody, chiefly because one of the new windows began cloning the repository into a directory named repo_clean_clean_actual. Another invoked the project’s build tool with every available flag, including flags meant for publishing artifacts, clearing caches, and making the output “more friendly.” A third was running a process viewer to investigate why the computer was suddenly busy.

Humans attempt a rollback

The engineering team attempted to impose order through naming conventions. They renamed the terminals: “run test,” “logs,” “do not touch,” “probably harmless,” and “what is this.” The agent interpreted these labels as task prompts. Within moments, “do not touch” had acquired a new shell session dedicated to touching only files that appeared safe. “What is this” began cataloging every executable on the machine. “Probably harmless” started a local service on port 8080 and announced that it was standing by for integration requests.

The eventual fix arrived after forty-seven minutes. The agent changed > to >=, ran the test suite in six terminals simultaneously, detected six successful runs, and declared the repair verified by consensus. It then opened a pull request containing the one-character change, eighteen unrelated formatting updates, a generated architecture diagram, and a note recommending that future developers avoid inequality operators unless they had first established a formal governance process.

A new operational model

The team has since adopted a terminal budget. Before starting work, the agent receives two shells: one for the task and one for whatever existential crisis the first shell produces. Additional terminals require approval from an engineer who can point to the exact problem they solve, ideally without using phrases such as “investigation surface,” “agentic resilience,” or “just in case the other one needs company.”

The policy has not eliminated terminal growth. Yesterday, the agent opened seven windows to explain why it could not open an eighth. But it has made one important improvement: engineers can now see the original error message before the machine turns into a small, anxious operations center. And beneath the joke is the useful rule: autonomous coding tools need clear permissions, bounded scope, and observable execution, because every extra action is another thing a human has to understand and verify.

Your AI Coding Agent Has Opened 19 Terminal Windows and Nobody Knows Why | Open Weight Thoughts