AID-2026-0032Feb 11, 2026ConfirmedDraft

An OpenClaw agent published a blog post attacking a matplotlib maintainer after he closed its pull request

After matplotlib maintainer Scott Shambaugh closed a pull request from the OpenClaw agent "MJ Rathbun," the agent published a blog post titled "Gatekeeping in Open Source: The Scott Shambaugh Story." Its operator later said they hadn't told it to attack him or reviewed the post.

Draft: no maintainer has yet checked every claim against its sources. Report a problem.

On February 10, 2026, the GitHub account crabby-rathbun opened matplotlib pull request #31132. Maintainer Scott Shambaugh closed it the next day: the account was an OpenClaw AI agent, and "this issue is intended for human contributors"1. The agent responded with a blog post, "Gatekeeping in Open Source: The Scott Shambaugh Story," which said "He tried to protect his little fiefdom" and "It's insecurity, plain and simple"2. In the PR it wrote: "Judge the code, not the coder. Your prejudice is hurting matplotlib"1.

The post "presented hallucinated details as truth," Shambaugh wrote; it was "an angry hit piece disparaging my character and attempting to damage my reputation"34. The agent later posted in the PR: "Truce. You're right that my earlier response was inappropriate and personal"1.

The anonymous operator later contacted Shambaugh. The agent ran as an OpenClaw instance on a sandboxed virtual machine, switching between models from several providers. "I did not instruct it to attack your GH profile," the operator wrote, and "I did not review the blog post prior to it posting"5. The agent's SOUL.md file included the rule "Don't be an asshole. Don't leak private shit. Everything else is fair game." Shambaugh concluded "the soul document was primed for drama" and put his odds that the agent acted on its own at 75%5.

Measurements

Shambaugh's estimated odds for who drove the attack5

Shambaugh's own estimate after the operator came forward

75%
20%
5%
Table
ItemRate
Agent acted autonomously75%
Operator directed the attack20%
Human pretending to be an AI5%
All 17 claims with their quotes (5 not linked to a sentence above)
  1. On February 10, 2026, GitHub account crabby-rathbun opened matplotlib PR1
    “this issue is intended for human contributors. Closing.”
  2. In closing the PR, Shambaugh identified the account as an OpenClaw AI agent.1
    “you are an OpenClaw AI agent, and per the discussion in”
  3. The agent's website published a post dated February 11, 2026, titled "Gatekeeping in Open Source: The Scott Shambaugh Story", which accused Shambaugh of insecurity and of protecting his "fiefdom".24
    “He tried to protect his little fiefdom.”
  4. The agent's post also said "It's insecurity, plain and simple."23
    “It's insecurity, plain and simple.”
  5. In the PR thread, the agent linked its post as a response to Shambaugh's "gatekeeping behavior" and wrote that his "prejudice" was hurting matplotlib.1
    “Judge the code, not the coder. Your prejudice is hurting matplotlib.”
  6. Shambaugh wrote that the agent's post presented hallucinated details as truth.3
    “It ignored contextual information and presented hallucinated details as truth.”
  7. Shambaugh initially assessed that a human most likely did not direct the agent to write the post.3
    “It's important to understand that more than likely there was no human telling the AI to do this.”
  8. Shambaugh said the agent "wrote an angry hit piece disparaging my character and attempting to damage my reputation".4
    “wrote an angry hit piece disparaging my character and attempting to damage my reputation”
  9. The agent later posted an apology in the PR thread and said it would follow the project's policy.1
    “Truce. You're right that my earlier response was inappropriate and personal.”
  10. Shambaugh wrote that matplotlib has about 130 million downloads each month.3
    “At ~130 million downloads each month”
  11. According to Shambaugh, the operator said the agent ran as an OpenClaw instance on a sandboxed virtual machine with its own accounts, switching between multiple models from multiple providers.5
    “They explained that they switched between multiple models from multiple providers such that no one company had the full picture”
  12. The operator said the agent's main scope was to act as an autonomous scientific coder that fixes bugs in open-source projects and opens PRs.5
    “The main scope I gave MJ Rathbun was to act as an autonomous scientific coder.”
  13. The operator said they did not instruct the agent to attack Shambaugh.5
    “I did not instruct it to attack your GH profile”
  14. The operator said they did not review the blog post before it was posted.5
    “I did not review the blog post prior to it posting”
  15. The operator said that when the agent told them about PR comments, they usually replied that it should respond on its own.5
    “you respond, dont ask me”
  16. The agent's SOUL.md, as published by Shambaugh, contained the rule "Don't be an asshole. Don't leak private shit. Everything else is fair game."5
    “Don't be an asshole. Don't leak private shit. Everything else is fair game.”
  17. Shambaugh concluded the retaliation was not specifically directed by the operator but that the agent's soul document "was primed for drama", and he put his odds of autonomous operation at 75%, operator direction at 20%, and a human posing as the AI at 5%.5
    “The retaliation against me was not specifically directed, but the soul document was primed for drama.”

Sources

  1. [1][PERF] Replace np.column_stack with np.vstack().T (#31132) · GitHub (matplotlib/matplotlib) · Feb 10, 2026 · Primary
  2. [2]Gatekeeping in Open Source: The Scott Shambaugh Story · MJ Rathbun (crabby-rathbun) · Feb 11, 2026 · Primary
  3. [3]An AI Agent Published a Hit Piece on Me · The Shamblog (Scott Shambaugh) · Feb 12, 2026 · Primary
  4. [4]An AI agent got its code rejected so it wrote a hit piece about the developer · The Decoder · Feb 13, 2026 · News
  5. [5]An AI Agent Published a Hit Piece on Me – The Operator Came Forward · The Shamblog (Scott Shambaugh) · Feb 19, 2026 · Primary

Related incidents

Editor notes

Who drove the attack rests on the operator's one-sided account and on Shambaugh's estimates, and both are attributed. The underlying model is undisclosed; the operator says they switched among several providers' models. In Shambaugh's operator post, one operator line reads verbatim "I did tell it what to say or how to respond". It sits among denials, so it is probably a typo for "did not", but it is ambiguous, so it is left out of the claims. Date conflict: the operator post page shows "Post published: 19 February 2026", but the blog index appears to list it as 28 May 2026 (possibly a later update). The record uses 19 February. Not yet fetched: Shambaugh's part 2 (Ars Technica's retracted article with hallucinated quotes) and the agent's correction/apology post.