Skip to content

Use default integrity filtering for smoke GitHub reads - #1282

Merged
davidslater merged 3 commits into
mainfrom
fix/isolate-untrusted-workflow-metadata
Oct 15, 2026
Merged

davidslater merged 3 commits into
mainfrom
fix/isolate-untrusted-workflow-metadata

Conversation

@davidslater

@davidslater davidslater commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Use min-integrity: approved, the public-repository default, for GitHub reads in all three standalone smoke workflows. Keep GitHub tools, gh-proxy mode, the repository allowlist, and the existing PR metadata smoke requirements unchanged. Recompile the locks with gh-aw v0.92.0.

default is not a supported literal policy value. The pinned gateway v0.4.31 assigns approved integrity to collaborator-authored PRs and direct PRs whose head and base repositories match. The recent repository PRs, including the Dependabot PRs, meet those rules. See the pinned integrity specification.

The issue digest remains an agentic workflow with its existing scoped min-integrity: none, since it must inventory issues from unaffiliated authors. The proposed deterministic digest, host smoke checks, tests, and documentation changes have all been reverted; there is no net digest or script change.

Validation: make fmt lint build test passed. All seven agentic workflows compiled successfully; only the unchanged statistics concurrency warning remains. Hosted smoke behavior has not yet been exercised with this policy.

Copilot AI max review requested due to automatic review settings October 15, 2026 16:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Security-sensitive workflow changes require maintainer verification, and digest publication sizing remains unresolved.

1 open finding
What changed in this PR

Moves public GitHub metadata handling outside workflow agents to reduce prompt-injection exposure in the digest and detector smoke workflows.

Changes:

  • Replace the agent-driven digest with deterministic API publication and cached recovery.
  • Validate smoke metadata on the host, disable agent GitHub tools, and regenerate locks.
  • Add offline tests and document the metadata boundaries.
File Description
scripts/​test/​issue-digest-test.sh Run offline digest tests.
scripts/​test/​issue-digest-test.py Cover publication, recovery, and escaping.
scripts/​test/​check-smoke-github-metadata-test.sh Test fixed boolean output.
scripts/​issue-digest.py Collect, escape, and publish digest metadata.
scripts/​check-smoke-github-metadata.sh Validate PR numbers outside agents.
README.md Document isolation and digest behavior.
.github/​workflows/​smoke-copilot-standalone.md Move metadata checks outside Copilot.
.github/​workflows/​smoke-copilot-standalone.lock.yml Regenerate Copilot workflow.
.github/​workflows/​smoke-codex-standalone.md Move metadata checks outside Codex.
.github/​workflows/​smoke-codex-standalone.lock.yml Regenerate Codex workflow.
.github/​workflows/​smoke-claude-standalone.md Move metadata checks outside Claude.
.github/​workflows/​smoke-claude-standalone.lock.yml Regenerate Claude workflow.
.github/​workflows/​gh-aw-issue-digest.yml Schedule deterministic publication and state persistence.
.github/​workflows/​gh-aw-issue-digest.md Remove the agent-driven digest definition.

🧠 Review effort: Max


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread scripts/issue-digest.py Outdated
Comment on lines +96 to +111
for item in issues:
number = item["number"]
labels = [escaped(label) for label in item["labels"] if label != "threat-detection"]
suffix = f", labels: {', '.join(labels)}" if labels else ""
lines.append(
f"- [#{number}](https://github.com/{UPSTREAM}/issues/{number}) — "
f"{escaped(item['title'])} — {item['state']}, opened {item['created']} "
f"by @{escaped(item['author'])}{suffix}"
)
lines.extend([
"", "## Why this matters", "",
"This repository ships the threat-detect binary consumed by gh-aw; these issues may require follow-up here.",
"", f"Scanned: {run_url}", "",
"<!-- gh-aw-issue-digest:v1 numbers=" + ",".join(str(item["number"]) for item in issues) + " -->",
])
return "\n".join(lines)
@davidslater davidslater changed the title Keep untrusted GitHub metadata out of workflow agents Use default integrity filtering for smoke GitHub reads Oct 15, 2026
@davidslater
davidslater merged commit 48e0fd0 into main Oct 15, 2026
10 checks passed
@davidslater
davidslater deleted the fix/isolate-untrusted-workflow-metadata branch October 15, 2026 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants