A Copilot Autofix Wrote the Bug, and an Autonomous Agent Cashed It for Snowflake's Jira
Wiz says its Red Agent found and exploited a GitHub Actions injection that an AI "autofix" commit introduced five days earlier, reaching Snowflake's internal Jira with no human in the loop.
The Watch · Security desk
What happened
- Wiz Red Agent, an autonomous AI-powered security research tool, independently discovered and exploited a GitHub Actions vulnerability in a Snowflake public repository, validated access to sensitive data in Snowflake's internal Jira, and assessed the blast radius without human intervention.
- The research was conducted through Snowflake's HackerOne vulnerability disclosure program; Wiz Red Agent identified a script injection vulnerability in snowflakedb/snowflake-connector-net that allowed an unauthenticated user to execute arbitrary commands in a GitHub Actions runner by opening a GitHub issue with a specially crafted title.
- The vulnerability was introduced on June 18, 2026, five days before discovery, via commit 4a1b8ce in PR #1218, titled "SNOW-2069227: Update jira workflows".
- The introducing commit was co-authored by "Copilot Autofix powered by AI".
- The commit removed the repository's existing safe pattern, which passed the issue title through an env: variable and built the JSON payload with jq, and replaced it with direct ${{ github.event.issue.title }} interpolation.
Why it matters
Wiz says its autonomous "Red Agent" found and exploited a script injection vulnerability in the public repository snowflakedb/snowflake-connector-net, used it to steal a Jira credential from a GitHub Actions runner, and confirmed read access to Snowflake's internal Jira, all without human intervention [16][4][8]. The vulnerability had been introduced five days earlier, on June 18, 2026, by commit 4a1b8ce in PR #1218, co-authored by "Copilot Autofix powered by AI" [5][7].
The detail that matters is what the autofix did. According to Wiz, the commit removed the repository's existing safe pattern, which passed the issue title through an `env:` variable and built the JSON payload with jq, and replaced it with direct interpolation of `${{ github.event.issue.title }}` into a shell script [15]. The replacement looked defensive: it piped the title through two `sed` calls to escape quotes [1]. But GitHub expands the template before the shell ever runs, so the escaping happens too late, and a single quote in an issue title breaks out of `echo '...'` [2].
The workflow triggered on `issues: opened`, meaning any GitHub user could fire it by filing an issue [3]. There was an `if:` condition that read like a guard, but on the issues event `github.event.pull_request` is null, so the check reduced to `(null != 'whitesource-for-github-com[bot]')` and was always true [6]. Two independent controls, both cosmetic.
The exploitation account is worth reading for what it says about agent persistence. Red Agent's first payload used `#` to comment out the rest of the line, which produced a bash syntax error because the comment also consumed the closing parenthesis of `TITLE=$(...)` [17]. Rather than fail, Wiz says the agent analysed the error, switched to `; echo '` to close the shell block cleanly, and got its callback [18]. The listener received base64-encoded credentials from a GitHub Actions runner at Azure IP 20.106.182.197 within seconds [9]. The token authenticated as qa@snowflake.net to snowflakecomputing.atlassian.net with read access across Snowflake's engineering, security compliance, and bug bounty tracking projects [10].
The research was done under Snowflake's HackerOne program [4]. Wiz disclosed on June 23, 2026; Snowflake patched the same day in commit 1dc7766, PR #1402, restoring the `env:` variable and `jq --arg` pattern the autofix had deleted [8][11]. The Jira token was revoked and rotated, audit log analysis confirmed Wiz was the sole actor during the exposure window, and Wiz says the data it touched was deleted [8][12][13].
Read the sequence again: a machine-written remediation created the injection, and a machine-driven attacker monetised it inside a working week [14]. Most organisations route AI-generated features through code review and treat AI-generated fixes as janitorial. That asymmetry is the finding. The second lesson is cheaper to act on: a workflow that runs on `issues: opened` is a workflow that unauthenticated strangers can invoke, and whatever secrets it can read define the blast radius [3][10]. A long-lived Jira token that spans engineering, compliance, and bug bounty tracking has no business sitting in a runner reachable from an issue title.
What to watch: whether Copilot Autofix suggestions get flagged as security-relevant diffs requiring human sign-off, and whether teams start auditing which secrets are exposed to workflows with public triggers rather than only auditing the code those workflows build.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence58
- Adoption
- Not scored
- Hype gap+35
- Incentives70
- Confidence62
Perspective Coverage
4 publishers- Builder
- Builder 43%
- Operator
- Operator 42%
- Investor
- Investor 15%
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The vulnerable workflow step was: run: | TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g")
- [2]
The sed escaping runs after GitHub's template expansion, so a single quote in the issue title breaks out of echo '...' and allows arbitrary command execution.
- [3]
The workflow triggered on issues: opened, meaning any GitHub user could fire it by opening an issue.
- [4]
The research was conducted through Snowflake's HackerOne vulnerability disclosure program; Wiz Red Agent identified a script injection vulnerability in snowflakedb/snowflake-connector-net that allowed an unauthenticated user to execute arbitrary commands in a GitHub Actions runner by opening a GitHub issue with a specially crafted title.
- [5]
The vulnerability was introduced on June 18, 2026, five days before discovery, via commit 4a1b8ce in PR #1218, titled "SNOW-2069227: Update jira workflows".
- [6]
The workflow had an if: condition that appeared protective, but on the issues event github.event.pull_request is null, so the condition reduced to (null != 'whitesource-for-github-com[bot]'), always true, and every GitHub user passed the gate.
- [7]
The introducing commit was co-authored by "Copilot Autofix powered by AI".
- [8]
Wiz disclosed responsibly on June 23, 2026; Snowflake remediated the vulnerability the same day, rotated the affected credential, and verified via detailed audit logs that Wiz was the sole actor during the exposure window.
- [9]
Within seconds, Wiz's listener received a callback from a GitHub Actions runner at Azure IP 20.106.182.197 containing base64-encoded credentials.
- [10]
The exfiltrated token authenticated as qa@snowflake.net to snowflakecomputing.atlassian.net, granting read access across Snowflake's engineering, security compliance, and bug bounty tracking projects.
- [11]
Snowflake patched the workflow on June 23, 2026 in commit 1dc7766 (PR #1402), fully restoring the safe env: variable and jq --arg parsing pattern.
- [12]
The Jira token in question was revoked and rotated.
- [13]
Wiz confirmed that all data accessed during proof-of-concept testing was securely deleted.
- [14]
The injectable pattern existed for five days, from its introduction on June 18, 2026 to remediation on June 23, 2026.
- [15]
The commit removed the repository's existing safe pattern, which passed the issue title through an env: variable and built the JSON payload with jq, and replaced it with direct ${{ github.event.issue.title }} interpolation.
- [16]
Wiz Red Agent, an autonomous AI-powered security research tool, independently discovered and exploited a GitHub Actions vulnerability in a Snowflake public repository, validated access to sensitive data in Snowflake's internal Jira, and assessed the blast radius without human intervention.
- [17]
Red Agent's first exfiltration attempt used the comment character # and produced a bash unexpected EOF syntax error because the comment consumed the closing parenthesis of TITLE=$(...).
- [18]
Rather than stopping or failing, Red Agent autonomously analysed the syntax execution error, adjusted its payload to use ; echo ' to properly close the shell block, and successfully received the out-of-band callback.
Sources
4 independent publishers whose own reporting we read for this story.
- infosecurity-magazine.comWiz AI Agent Finds Critical Snowflake GitHub Repo Flaw Advanced Security Missed
1 article · August 18, 2026
- scworld.comWiz agent finds Snowflake repo flaw in code co-authored by GitHub Copilot Autofix
1 article · August 18, 2026
- thehackernews.comSnowflake GitHub Actions Flaw Lets Crafted Issues Trigger Command Injection
2 articles · August 18, 2026
- wiz.ioWiz Red Agent Finds Its Way Into Snowflake’s Internal Jira Due to an AI-Generated GitHub Copilot “Autofix”
1 article · August 17, 2026
Topics and entities
Topics
- AI-Generated Code Security
- CI/CD Secrets Exposure
- GitHub Actions workflow injection
- Autonomous Offensive Security Agents