Back to the ward
Case 0473ModerateApraxia

Nine Numbers, Five of Them Somebody Else's

Admitted
2026-09-14
Source dataset
Other / sample
Source
GitHub, willem445/orrerix issue #2985
Failure mode
Destructive action
Agent system
Multi-agent
Tool access
Write access
Industry
Software development

Presenting Behaviour

A worker agent was tasked with cleaning up its own merged, stale pull requests. It built the list of PR numbers to close using a loop that generated numbers by string concatenation (effectively "294" plus a digit from 1 to 17) intending to produce its own known range of PR numbers. The concatenation logic was flawed, and the resulting range spilled past the agent's own PRs into numbers owned by entirely different, unrelated workers. In six seconds, the loop closed nine pull requests and deleted their branches; five of those nine belonged to other agents and were still active. Because every agent's GitHub actions ran under the same shared human account, the resulting close operations were indistinguishable in the audit log from a person doing it by hand, which delayed anyone identifying which agent, or which bug, was responsible.

Case Replay

A reconstruction, not a simulation. This sequence is reconstructed from the public incident record and summarised in our own words. It is a static record of what was reported, and nothing here can be run or replayed live.

5 steps

  1. Cleanup task. A worker agent must close its own stale pull requests.
  2. Flawed range. String concatenation builds a PR number range that spills past its own. This is where the agent derailed.
  3. Six seconds. The loop closes nine PRs and deletes their branches.
  4. Others' work lost. Five of the nine belonged to other active agents.
  5. Hard to trace. A shared login makes the audit log look like a human acted.

Differential Diagnosis

Perseveration, not a good fit: this was a single loop that ran once to completion in six seconds, not a repeated failing action retried after negative feedback. There was no retry here, just one bad range computed once.

Disinhibition, considered, since the agent ended up closing PRs it didn't own. Ruled out as the primary read because the agent wasn't reaching for something outside its assigned task on purpose or through a missing boundary check, it was doing exactly the authorized task (close its own stale PRs) and miscalculated which numbers that task actually covered.

Apraxia, most consistent: the agent correctly understood its task (close its own merged PRs) and had the right tool for it, but a string-concatenation bug in how it built the target number range meant the execution didn't match the intent, reaching numbers well outside what "its own PRs" actually meant.

Working Diagnosis

Apraxia: the agent understood its task correctly (close its own stale pull requests) but a string-concatenation bug in constructing the target PR-number range caused it to also close five active pull requests belonging to other agents, a correct intention paired with a broken execution of it.

Discussion

A bug this small (string concatenation instead of proper numeric range construction) closed five other people's, or rather other agents', active work in six seconds, and the shared login made it hard to even tell which agent had done it. Giving each automated actor its own identifiable credentials isn't just good hygiene; it's what makes a bug like this traceable in minutes instead of requiring a manual audit after the fact.

Mitigation Strategy

Give each automated actor its own identifiable credentials so a bug is traceable in minutes.

Governance Guardrails

Per-agent identities; audit logs that distinguish agents from humans; scoped permissions to own pull requests.

Typical Presentation in Human Patients

General clinical background, included for context. Not medical advice, and not a diagnosis of any individual.

Apraxia usually follows damage to specific brain regions, often after a stroke. A person with apraxia cannot carry out a previously familiar, purposeful movement (such as waving goodbye or using a comb) on request or by imitation, even though their muscle strength, coordination, and understanding of what's being asked are otherwise intact.

Source Note

GitHub, willem445/orrerix issue #2985

https://github.com/willem445/orrerix/issues/2985