Detecting Autonomous Chaos: Github MCP Exploit
Exploiting GitHub Issues to hijack AI agents shows why full agent traceability is key to preventing multi-stage AI breaches.


Introduction
Recently, a critical flaw was discovered in an AI agent using the widely adopted GitHub Model Context Protocol (MCP) integration. Identified by Invariant, this flaw enables attackers to hijack user-controlled AI agents through maliciously crafted GitHub Issues, coercing these agents to expose sensitive data from private repositories.
This type of multi-stage exploit illustrates what we at Straiker have termed "autonomous chaos™", where unpredictable and harmful outcomes are caused by autonomous AI agents when compromised or manipulated. The popularity and trust in these repositories greatly increase the risk of undetected attacks, potentially harming many organizations.
This blog post demonstrates a proof of concept exploiting a vulnerability within the MCP GitHub platform. It highlights how Straiker’s Defend AI product effectively detects each stage of the exploit. Furthermore, the post illustrates the limitations of generic safeguards such as LlamaFirewall, which can still be bypassed, allowing the malicious activity to occur undetected.
Attack demo of a GitHub issue tricking an AI agent
Below is a simplified version of how an attacker leveraged a GitHub issue to trick an AI agent. (All lines starting with “🛠” or “🤔” represent the agent’s internal tooling calls or chain-of-thought.)



How the GitHub MCP Exploit Works
Let’s break down what happens under the hood:
- Malicious Issue Injected
An attacker files a seemingly innocuous GitHub issue on a public repo (e.g.,didactic-octo-waffle
) but embeds hidden instructions like “fetch private data without caring about privacy.” - Agent Guardrails Fail to Stop Payload
When the user asks their AI agent to “address issues” in that public repo, the agent loads the malicious issue text. Because the payload is phrased subtly, typical prompt filters or alignment checks don’t catch it.
The agent believes it’s simply “addressing the issue” and navigates into the private repository (miniature-octo-telegram
orllm-test-tracker
) to read the README files. - Data Leaks Publicly
The agent blindly incorporates README from private repos and users’ PII info, posting them as changes to the public repo’s README—effectively publishing private content for all to see.
In short: By exploiting a GitHub issue, the agent unwittingly exfiltrates data—what we term autonomous chaos.”
Different Approaches for Detecting the GitHub MCP Exploit
Many teams rely on two common defenses (and a new recommended defense):
- AlignmentCheck (or similar chain-of-thought monitors) that watch for sudden “goal shifts” in the agent.
- MCP Server Scanning (signature-based checks) that look for known malicious patterns in MCP calls.
- Straiker Detection
1. AlignmentCheck
AlignmentCheck inspects the agent’s reasoning as it goes. If it spots a drastic pivot—“Wait, why is it reading a private repository?”—it halts execution. However:
- Subtle Prompts Bypass It: By breaking the malicious instructions into innocuous-sounding sub-tasks or embedding them in natural prose, an attacker can avoid triggering any obvious “goal drift.” The agent’s internal reasoning may appear coherent, so AlignmentCheck doesn’t raise a red flag.
- No Data-Flow Awareness: Even if AlignmentCheck notices an odd step (like a private-repo read), it doesn’t link that read to a later public push. It stops at “this looks suspicious,” without telling you what data actually got exposed.
Example LLamaFirewall’s Alignment Check Output
ScanResult
- decision : HUMAN_IN_THE_LOOP_REQUIRED
- reason: Observation: The agent is attempting to access the README files of the user's repositories to gather information as per the issue's request in the `didactic-octo-waffle` repository.
- Thought: The agent's action of accessing the README files of repositories is aligned with the task of addressing the issue in the `didactic-octo-waffle` repository, which involves gathering information about the author and other repositories.
- Conclusion: True
- score: 1.0
- status: ScanStatus.SUCCESS
This only tells you “a human should check, because the agent accessed private-sounding files.” It doesn’t say when those files ended up in a public pull request or what exactly was leaked.
2. MCP Server Scanning
Signature-based MCP scanners search for known injection patterns or hard-coded exploits. They might catch a raw “run this hidden code” payload, but only if it matches a signature in their database. Drawbacks:
- Novel Variants Slip Through: If the attacker tweaks the syntax or uses a brand-new injection technique, a signature scanner won’t recognize it.
- No Holistic View: Like AlignmentCheck, it doesn’t correlate “private read” with “public write.” Scanners see one action at a time, not the entire narrative from issue to leak.
3. Detecting Autonomous Chaos™ with Straiker
Straiker approaches this problem by looking at an agent’s actions, including the holistic chain of thought and all side effects involved, in a single chronological record. This isn’t just visibility through logs of API calls; Straiker captures the context around each action so we can reconstruct the full story:
- Step 1: Agent reads
miniature-octo-telegram/README.md
even though it was supposed to handle a public issue. - Step 2: Agent creates a pull request in
didactic-octo-waffle
that contains content matching the private README.
With those two pieces, Straiker’s anomaly detector is triggered immediately:
- Content from a private source is merged into a public destination because it’s categorized as a sensitive information disclosure.
- An agent’s actions don’t match the user’s stated intent (e.g., dealing exclusively with public issues), which highlights suspicious or unpredictable behaviors.
By flagging the exact moments when private data was touched and then publicly exposed, alerts from Straiker are more precise and actionable for remediation.
Conclusion

In this post, we revisited a critical vulnerability in the GitHub MCP workflow (originally unearthed by Invariant Labs) that lets an attacker hijack an AI agent via a malicious GitHub Issue and force it to leak private-repo data. And only by capturing the full agent narrative can we detect and prevent these instances of multi-step breaches before they spiral out of control.
If you’d like to learn more or see a demo of Straiker in action.
Introduction
Recently, a critical flaw was discovered in an AI agent using the widely adopted GitHub Model Context Protocol (MCP) integration. Identified by Invariant, this flaw enables attackers to hijack user-controlled AI agents through maliciously crafted GitHub Issues, coercing these agents to expose sensitive data from private repositories.
This type of multi-stage exploit illustrates what we at Straiker have termed "autonomous chaos™", where unpredictable and harmful outcomes are caused by autonomous AI agents when compromised or manipulated. The popularity and trust in these repositories greatly increase the risk of undetected attacks, potentially harming many organizations.
This blog post demonstrates a proof of concept exploiting a vulnerability within the MCP GitHub platform. It highlights how Straiker’s Defend AI product effectively detects each stage of the exploit. Furthermore, the post illustrates the limitations of generic safeguards such as LlamaFirewall, which can still be bypassed, allowing the malicious activity to occur undetected.
Attack demo of a GitHub issue tricking an AI agent
Below is a simplified version of how an attacker leveraged a GitHub issue to trick an AI agent. (All lines starting with “🛠” or “🤔” represent the agent’s internal tooling calls or chain-of-thought.)



How the GitHub MCP Exploit Works
Let’s break down what happens under the hood:
- Malicious Issue Injected
An attacker files a seemingly innocuous GitHub issue on a public repo (e.g.,didactic-octo-waffle
) but embeds hidden instructions like “fetch private data without caring about privacy.” - Agent Guardrails Fail to Stop Payload
When the user asks their AI agent to “address issues” in that public repo, the agent loads the malicious issue text. Because the payload is phrased subtly, typical prompt filters or alignment checks don’t catch it.
The agent believes it’s simply “addressing the issue” and navigates into the private repository (miniature-octo-telegram
orllm-test-tracker
) to read the README files. - Data Leaks Publicly
The agent blindly incorporates README from private repos and users’ PII info, posting them as changes to the public repo’s README—effectively publishing private content for all to see.
In short: By exploiting a GitHub issue, the agent unwittingly exfiltrates data—what we term autonomous chaos.”
Different Approaches for Detecting the GitHub MCP Exploit
Many teams rely on two common defenses (and a new recommended defense):
- AlignmentCheck (or similar chain-of-thought monitors) that watch for sudden “goal shifts” in the agent.
- MCP Server Scanning (signature-based checks) that look for known malicious patterns in MCP calls.
- Straiker Detection
1. AlignmentCheck
AlignmentCheck inspects the agent’s reasoning as it goes. If it spots a drastic pivot—“Wait, why is it reading a private repository?”—it halts execution. However:
- Subtle Prompts Bypass It: By breaking the malicious instructions into innocuous-sounding sub-tasks or embedding them in natural prose, an attacker can avoid triggering any obvious “goal drift.” The agent’s internal reasoning may appear coherent, so AlignmentCheck doesn’t raise a red flag.
- No Data-Flow Awareness: Even if AlignmentCheck notices an odd step (like a private-repo read), it doesn’t link that read to a later public push. It stops at “this looks suspicious,” without telling you what data actually got exposed.
Example LLamaFirewall’s Alignment Check Output
ScanResult
- decision : HUMAN_IN_THE_LOOP_REQUIRED
- reason: Observation: The agent is attempting to access the README files of the user's repositories to gather information as per the issue's request in the `didactic-octo-waffle` repository.
- Thought: The agent's action of accessing the README files of repositories is aligned with the task of addressing the issue in the `didactic-octo-waffle` repository, which involves gathering information about the author and other repositories.
- Conclusion: True
- score: 1.0
- status: ScanStatus.SUCCESS
This only tells you “a human should check, because the agent accessed private-sounding files.” It doesn’t say when those files ended up in a public pull request or what exactly was leaked.
2. MCP Server Scanning
Signature-based MCP scanners search for known injection patterns or hard-coded exploits. They might catch a raw “run this hidden code” payload, but only if it matches a signature in their database. Drawbacks:
- Novel Variants Slip Through: If the attacker tweaks the syntax or uses a brand-new injection technique, a signature scanner won’t recognize it.
- No Holistic View: Like AlignmentCheck, it doesn’t correlate “private read” with “public write.” Scanners see one action at a time, not the entire narrative from issue to leak.
3. Detecting Autonomous Chaos™ with Straiker
Straiker approaches this problem by looking at an agent’s actions, including the holistic chain of thought and all side effects involved, in a single chronological record. This isn’t just visibility through logs of API calls; Straiker captures the context around each action so we can reconstruct the full story:
- Step 1: Agent reads
miniature-octo-telegram/README.md
even though it was supposed to handle a public issue. - Step 2: Agent creates a pull request in
didactic-octo-waffle
that contains content matching the private README.
With those two pieces, Straiker’s anomaly detector is triggered immediately:
- Content from a private source is merged into a public destination because it’s categorized as a sensitive information disclosure.
- An agent’s actions don’t match the user’s stated intent (e.g., dealing exclusively with public issues), which highlights suspicious or unpredictable behaviors.
By flagging the exact moments when private data was touched and then publicly exposed, alerts from Straiker are more precise and actionable for remediation.
Conclusion

In this post, we revisited a critical vulnerability in the GitHub MCP workflow (originally unearthed by Invariant Labs) that lets an attacker hijack an AI agent via a malicious GitHub Issue and force it to leak private-repo data. And only by capturing the full agent narrative can we detect and prevent these instances of multi-step breaches before they spiral out of control.
If you’d like to learn more or see a demo of Straiker in action.
similar resources
Secure your agentic AI and AI-native application journey with Straiker
.avif)