Repository navigation
Harden detection-gated cache access boundaries - #72543
Conversation
Restrict agent cache tokens to reads when detection is enabled, publish cache memory through a write-only job requiring explicit detection acceptance, and diagnose low-trust cache-write overrides. Preserve dry-run, GHES, and no-detection behavior; regenerate workflow locks and document remaining trust boundaries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Document the existing GHES CLI/config opt-out for compiler cache-mode fields and its weaker token boundary. Update CTR-019 and its evidence mapping for detection-separated publication, dry-run precedence, explicit-write diagnostics, and unchanged no-detection behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
|
✅ Test Quality Sentinel completed test quality analysis. Test Quality SentinelOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
|
✅ Ponytail Reviewer completed successfully! Ponytail ReviewerOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
✅ PR Code Quality Reviewer completed the code quality review.
|
🏗️ Design Decision Gate — ADR RequiredThis PR adds more than 100 new lines to core business logic (540 new lines under 📄 Draft ADR committed:
Decision recorded in the draft: when detection is enabled on GitHub.com, the agent job gets 📋 What to do next
Once an ADR is linked in the PR body, this gate will run again and check that the implementation matches the decision. ❓ Why ADRs MatterADRs create a searchable, permanent record of why the codebase looks the way it does. They help future contributors, including you. 📋 Michael Nygard ADR Format ReferenceAn ADR must contain these four sections to be considered complete:
ADRs are stored in
|
Update smoke-copilot's expected cache modes and detection acceptance condition to match the intentional compiler hardening. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment MemoryPeek at saved memory (pr-code-quality-reviewer)Note This comment is managed by comment memory.Expand the saved memory block to view or edit the persistent context for this thread.
|
There was a problem hiding this comment.
Request changes
The cache boundary is not safe yet: low-trust publisher executions can populate a cache lineage later consumed by trusted runs, and detection acceptance is not cache provenance. The implementation also disables all compiler-managed dependency-cache saves for detection-enabled trusted workflows, causing silent permanent misses. See the inline comments for the required isolation and save-path fixes.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt50 · ~6 AIC · ⌖ ~1 AIC · ⊞ 1.6K
Comment /review to run again
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /codebase-design and /improve-codebase-architecture (pr-triage: architecture_change). No blocking issues found — approving with two minor observations.
📋 Key Themes & Highlights
Key Themes
- Consistent gating pattern: The new
detectionAcceptedcondition inbuildUpdateCacheMemoryJob(needs.detection.result == 'success' && needs.detection.outputs.detection_success == 'true') mirrors the existing guard already used incompiler_custom_job_detection.go(needs.<detection>.result == 'success' && needs.<detection>.outputs.detection_success == 'true'). Good domain-language consistency — this is the established vocabulary for "detection accepted," not a new concept. - CacheMode threaded cleanly through the AST:
Job.CacheMode->actions.Job.CacheMode->jobToActions/hasActionsExecutionSettings->lower.go/parse.goround-trips correctly, verified byTestParseJobCacheModes's parse/lower/emit/reparse round trip. This is a deep, well-bounded extension of the existing Actions AST rather than a parallel structure. - Test coverage is strong and matches the TDD spirit:
TestCachePublisherRequiresDetectionAcceptanceexhaustively cross-products agent x detection x detection_success (5x5x3 = 75 cases) against the exact renderedifexpression — a textbook boundary-condition test per /tdd.TestCompiledCacheAccessBoundariesandTestCompiledCacheAccessDryRunAndGHEScover the trigger/dry-run/GHES/restore-only matrix end-to-end on compiled YAML, not just unit-level builders. - Linter follow-through:
cache_write_overrides.gocorrectly treats job-levelread/noneas a cap that overrides an inherited workflow-levelwrite, and job names are explicitly not trusted as a proxy for publisher legitimacy (TestCacheWriterJobNamesDoNotEstablishTrust) — avoids a common false sense of security in the rule design.
Minor, non-blocking observations
pkg/workflow/lint/cache_write_overrides.go: thecachePolicyModevalidator only accepts the literal strings read/write/write-only/none/empty; any other value (including GitHub expressions like${{ ... }}) is rejected as an error at lint time rather than treated as "evaluates at runtime, can't statically determine." This appears intentional perTestCacheWriteModePartialFailures, but worth double-checking that no legitimate workflow computes cache-mode dynamically — if so this linter would hard-fail compilation/linting rather than degrade gracefully.- The PR body is candid that
make agent-report-progressis not fully gate-green due to 2,177 pre-existing custom-linter diagnostics (verified unchanged before/after). That's appropriately disclosed and out of scope for this diff, not a reason to withhold approval.
Positive Highlights
- Clean separation of concerns: agent-job read restriction, frontmatter cache restore-only switch, and the separate write-only publisher job are each independently gated and independently tested.
- Documentation (cache-memory.md, enterprise-configuration.md) is precise about what the boundary does and does not guarantee (no artifact authenticity, no provenance, GHES omission caveats) — avoids overclaiming security properties, consistent with /grill-with-docs expectations.
- 307 lock files regenerated mechanically with no source workflow changes — clean, reviewable blast radius for a repo-wide compiler change.
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · ~123 AIC · ⌖ ~16 AIC · ⊞ 10.2K
Comment /matt to run again
There was a problem hiding this comment.
🟡 Changes recommended
Drive memory can still persist when detection reports success=false, while the new job-level cache-mode keys trigger actionlint errors that break linting and strict compilation.
2 open issues
What changed in this PR
This PR separates agent cache access from detection-approved cache-memory publication in the gh-aw compiler.
Changes:
- Restricts detection-enabled agent jobs to read-only cache access and restores dependency caches without saving.
- Requires explicit detector acceptance before a separate write-only cache-memory publisher runs.
- Preserves cache modes in the Actions AST, adds low-trust write diagnostics and regression tests, documents boundaries, and regenerates workflow locks.
No confirmed defects were identified in the supplied changes. Validation was limited to static inspection; builds, scanners, and live workflows were not run during this review.
| File | Description |
|---|---|
| specs/compiler-threat-detection-changelog.md | Updated as part of this pull request. |
| pkg/workflow/lint/cache_write_overrides.go | Updated as part of this pull request. |
| pkg/workflow/lint/cache_write_overrides_test.go | Updated as part of this pull request. |
| pkg/workflow/lint/cache_poisoning.go | Updated as part of this pull request. |
| pkg/workflow/jobs.go | Updated as part of this pull request. |
| pkg/workflow/compiler_main_job.go | Updated as part of this pull request. |
| pkg/workflow/cache_steps.go | Updated as part of this pull request. |
| pkg/workflow/cache_memory.go | Updated as part of this pull request. |
| pkg/workflow/cache_access_test.go | Updated as part of this pull request. |
| pkg/workflow/actions/workflow.go | Updated as part of this pull request. |
| pkg/workflow/actions/parse.go | Updated as part of this pull request. |
| pkg/workflow/actions/parse_test.go | Updated as part of this pull request. |
| pkg/workflow/actions/lower.go | Updated as part of this pull request. |
| pkg/workflow/actions_ast.go | Updated as part of this pull request. |
| pkg/cli/lint_cache_mode_test.go | Updated as part of this pull request. |
| docs/src/content/docs/reference/workflow-linters.md | Updated as part of this pull request. |
| docs/src/content/docs/reference/enterprise-configuration.md | Updated as part of this pull request. |
| docs/src/content/docs/reference/cache-memory.md | Updated as part of this pull request. |
| .github/workflows/workflow-skill-extractor.lock.yml | Updated as part of this pull request. |
| .github/workflows/workflow-normalizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/workflow-health-manager.lock.yml | Updated as part of this pull request. |
| .github/workflows/workflow-generator.lock.yml | Updated as part of this pull request. |
| .github/workflows/windows.lock.yml | Updated as part of this pull request. |
| .github/workflows/windows-grower.lock.yml | Updated as part of this pull request. |
| .github/workflows/weekly-safe-outputs-spec-review.lock.yml | Updated as part of this pull request. |
| .github/workflows/weekly-network-domains-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/weekly-issue-summary.lock.yml | Updated as part of this pull request. |
| .github/workflows/weekly-editors-health-check.lock.yml | Updated as part of this pull request. |
| .github/workflows/weekly-blog-post-writer.lock.yml | Updated as part of this pull request. |
| .github/workflows/visual-regression-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/video-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/update-astro.lock.yml | Updated as part of this pull request. |
| .github/workflows/unbloat-docs.lock.yml | Updated as part of this pull request. |
| .github/workflows/uk-ai-operational-resilience.lock.yml | Updated as part of this pull request. |
| .github/workflows/ubuntu-image-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/typist.lock.yml | Updated as part of this pull request. |
| .github/workflows/tidy.lock.yml | Updated as part of this pull request. |
| .github/workflows/terminal-stylist.lock.yml | Updated as part of this pull request. |
| .github/workflows/technical-doc-writer.lock.yml | Updated as part of this pull request. |
| .github/workflows/super-linter.lock.yml | Updated as part of this pull request. |
| .github/workflows/sub-issue-closer.lock.yml | Updated as part of this pull request. |
| .github/workflows/step-name-alignment.lock.yml | Updated as part of this pull request. |
| .github/workflows/static-analysis-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/stale-repo-identifier.lock.yml | Updated as part of this pull request. |
| .github/workflows/stale-pr-cleanup.lock.yml | Updated as part of this pull request. |
| .github/workflows/squad.lock.yml | Updated as part of this pull request. |
| .github/workflows/squad-plan.lock.yml | Updated as part of this pull request. |
| .github/workflows/squad-implement-worker.lock.yml | Updated as part of this pull request. |
| .github/workflows/squad-game-planner.lock.yml | Updated as part of this pull request. |
| .github/workflows/spec-librarian.lock.yml | Updated as part of this pull request. |
| .github/workflows/spec-extractor.lock.yml | Updated as part of this pull request. |
| .github/workflows/spec-enforcer.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-workflow-call.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-workflow-call-with-inputs.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-work-queue.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-update-cross-repo-pr.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-test-tools.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-temporary-id.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-service-ports.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-security-alerts.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-repo-memory-ledger.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-pydantic.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-project.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-pi.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-pi-sub-agents.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-pi-routed.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-pi-routed-claude.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-otel-backends.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-opencode.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-multi-pr.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-kiro.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-issues.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-goose.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-github-claude.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-gemini.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-drive.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-deepseek-harness.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-cursor.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-crush.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-create-cross-repo-pr.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-sub-agents.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-small.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-sdk.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-sdk-routed.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-sdk-routed-claude.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-routed.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-routed-steering.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-routed-claude.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-mai.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-dynamic-workflow.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-auto.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-arm.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-aoai-entra.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-copilot-aoai-apikey.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-codex.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-codex-routed.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-claude.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-claude-routed.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-claude-on-copilot.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-claude-dynamic.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-checkout-pr-dispatch.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-call-workflow.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-builtin-ledgers.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-aider.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-agent-scoped-approved.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-agent-public-none.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-agent-public-approved.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-agent-all-none.lock.yml | Updated as part of this pull request. |
| .github/workflows/smoke-agent-all-merged.lock.yml | Updated as part of this pull request. |
| .github/workflows/slide-deck-maintainer.lock.yml | Updated as part of this pull request. |
| .github/workflows/skillet.lock.yml | Updated as part of this pull request. |
| .github/workflows/sighthound-security-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/sergo.lock.yml | Updated as part of this pull request. |
| .github/workflows/semantic-function-refactor.lock.yml | Updated as part of this pull request. |
| .github/workflows/security-review.lock.yml | Updated as part of this pull request. |
| .github/workflows/security-compliance.lock.yml | Updated as part of this pull request. |
| .github/workflows/scout.lock.yml | Updated as part of this pull request. |
| .github/workflows/schema-feature-coverage.lock.yml | Updated as part of this pull request. |
| .github/workflows/schema-consistency-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/safe-output-health.lock.yml | Updated as part of this pull request. |
| .github/workflows/research.lock.yml | Updated as part of this pull request. |
| .github/workflows/repository-quality-improver.lock.yml | Updated as part of this pull request. |
| .github/workflows/repo-tree-map.lock.yml | Updated as part of this pull request. |
| .github/workflows/repo-audit-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/refiner.lock.yml | Updated as part of this pull request. |
| .github/workflows/refactoring-cadence.lock.yml | Updated as part of this pull request. |
| .github/workflows/q.lock.yml | Updated as part of this pull request. |
| .github/workflows/python-data-charts.lock.yml | Updated as part of this pull request. |
| .github/workflows/purelock.lock.yml | Updated as part of this pull request. |
| .github/workflows/pr-triage-agent.lock.yml | Updated as part of this pull request. |
| .github/workflows/pr-sous-chef.lock.yml | Updated as part of this pull request. |
| .github/workflows/pr-nitpick-reviewer.lock.yml | Updated as part of this pull request. |
| .github/workflows/pr-description-caveman.lock.yml | Updated as part of this pull request. |
| .github/workflows/portfolio-analyst.lock.yml | Updated as part of this pull request. |
| .github/workflows/poem-bot.lock.yml | Updated as part of this pull request. |
| .github/workflows/plan.lock.yml | Updated as part of this pull request. |
| .github/workflows/pdf-summary.lock.yml | Updated as part of this pull request. |
| .github/workflows/org-health-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/necromancer.lock.yml | Updated as part of this pull request. |
| .github/workflows/metrics-collector.lock.yml | Updated as part of this pull request. |
| .github/workflows/mergefest.lock.yml | Updated as part of this pull request. |
| .github/workflows/mcp-inspector.lock.yml | Updated as part of this pull request. |
| .github/workflows/lockfile-stats.lock.yml | Updated as part of this pull request. |
| .github/workflows/linter-miner.lock.yml | Updated as part of this pull request. |
| .github/workflows/lint-monster.lock.yml | Updated as part of this pull request. |
| .github/workflows/jsweep.lock.yml | Updated as part of this pull request. |
| .github/workflows/issue-triage-agent.lock.yml | Updated as part of this pull request. |
| .github/workflows/issue-monster.lock.yml | Updated as part of this pull request. |
| .github/workflows/issue-arborist.lock.yml | Updated as part of this pull request. |
| .github/workflows/instructions-janitor.lock.yml | Updated as part of this pull request. |
| .github/workflows/hourly-ci-cleaner.lock.yml | Updated as part of this pull request. |
| .github/workflows/grumpy-reviewer.lock.yml | Updated as part of this pull request. |
| .github/workflows/gpclean.lock.yml | Updated as part of this pull request. |
| .github/workflows/go-pattern-detector.lock.yml | Updated as part of this pull request. |
| .github/workflows/go-logger.lock.yml | Updated as part of this pull request. |
| .github/workflows/go-fan.lock.yml | Updated as part of this pull request. |
| .github/workflows/glossary-maintainer.lock.yml | Updated as part of this pull request. |
| .github/workflows/github-remote-mcp-auth-test.lock.yml | Updated as part of this pull request. |
| .github/workflows/github-mcp-tools-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/github-mcp-structural-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/functional-pragmatist.lock.yml | Updated as part of this pull request. |
| .github/workflows/front-page-copy-guard.lock.yml | Updated as part of this pull request. |
| .github/workflows/firewall-escape.lock.yml | Updated as part of this pull request. |
| .github/workflows/feature-grower.lock.yml | Updated as part of this pull request. |
| .github/workflows/example-workflow-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/example-failure-category-filter.lock.yml | Updated as part of this pull request. |
| .github/workflows/evoskill-evolver.lock.yml | Updated as part of this pull request. |
| .github/workflows/eslint-refiner.lock.yml | Updated as part of this pull request. |
| .github/workflows/eslint-monster.lock.yml | Updated as part of this pull request. |
| .github/workflows/eslint-miner.lock.yml | Updated as part of this pull request. |
| .github/workflows/eslint-factory-dispatcher.lock.yml | Updated as part of this pull request. |
| .github/workflows/engine-conformance-dispatcher.lock.yml | Updated as part of this pull request. |
| .github/workflows/duplicate-code-detector.lock.yml | Updated as part of this pull request. |
| .github/workflows/draft-pr-cleanup.lock.yml | Updated as part of this pull request. |
| .github/workflows/docs-noob-tester.lock.yml | Updated as part of this pull request. |
| .github/workflows/dictation-prompt.lock.yml | Updated as part of this pull request. |
| .github/workflows/developer-docs-consolidator.lock.yml | Updated as part of this pull request. |
| .github/workflows/dev-hawk.lock.yml | Updated as part of this pull request. |
| .github/workflows/detection-analysis-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/designer-drift-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/design-decision-gate.lock.yml | Updated as part of this pull request. |
| .github/workflows/deployment-incident-monitor.lock.yml | Updated as part of this pull request. |
| .github/workflows/dependabot-go-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/delight.lock.yml | Updated as part of this pull request. |
| .github/workflows/deepsec-security-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/deep-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/dead-code-remover.lock.yml | Updated as part of this pull request. |
| .github/workflows/dataflow-pr-discussion-dataset.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-yamllint-fixer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-workflow-updater.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-workflow-security-model.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-work-queues-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-work-queue-formal-verification.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-windows-terminal-integration-builder.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-windows-defender-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-vulnhunter-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-trajectory-grader-implementer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-token-consumption-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-testify-uber-super-expert.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-team-status.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-team-evolution-insights.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-syntax-error-quality.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-storify.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-squid-image-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-spending-forecast.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-spec-coverage-kiro.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-spdd-spec-planner.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-semgrep-scan.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-security-red-team.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-security-observability.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-secrets-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-schema-audit-cursor.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-safeoutputs-git-simulator.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-safe-outputs-conformance.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-safe-output-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-safe-output-integrator.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-report-dispatcher.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-repo-chronicle.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-rendering-scripts-verifier.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-reliability-review.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-regulatory.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-regression-audit-kiro.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-pr-review-cursor.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-performance-summary.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-observability-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-news.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-multi-device-docs-tester.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-model-resolution.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-model-inventory.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-mcp-concurrency-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-max-ai-credits-test.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-issues-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-hippo-learn.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-graft-intelligence.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-grader-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-go-test-stubs-aider.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-go-test-parallelizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-github-docs-seo-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-geo-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-function-namer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-formal-spec-verifier.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-firewall-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-file-diet.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-fact.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-experiment-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-evals-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-elixir-credo-snippet-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-ecosystem-explorer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-documentation-diagram.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-doc-updater.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-doc-healer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-credit-limit-test.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-compiler-threat-spec-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-compiler-quality.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-community-attribution.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-code-metrics.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-code-debt-aider.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-cli-tools-tester.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-cli-performance.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-choice-test.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-caveman-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-cache-strategy-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-byok-ollama-test.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-awf-spec-compiler-surfacing.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-aw-cross-repo-compile-check.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-assign-issue-to-user.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-arxiv-researcher.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-architecture-diagram.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-ambient-context-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-agentrx-trace-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-agent-of-the-day-blog-writer.lock.yml | Updated as part of this pull request. |
| .github/workflows/daily-action-setup-security-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/craft.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-session-insights.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-pr-prompt-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-pr-nlp-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-pr-merged-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-opt.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-cli-deep-research.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-centralization-optimizer.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-centralization-drilldown.lock.yml | Updated as part of this pull request. |
| .github/workflows/copilot-agent-analysis.lock.yml | Updated as part of this pull request. |
| .github/workflows/contribution-check.lock.yml | Updated as part of this pull request. |
| .github/workflows/constraint-solving-potd.lock.yml | Updated as part of this pull request. |
| .github/workflows/commit-changes-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/code-simplifier.lock.yml | Updated as part of this pull request. |
| .github/workflows/code-scanning-fixer.lock.yml | Updated as part of this pull request. |
| .github/workflows/cloclo.lock.yml | Updated as part of this pull request. |
| .github/workflows/cli-version-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/cli-consistency-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/claude-code-user-docs-review.lock.yml | Updated as part of this pull request. |
| .github/workflows/ci-coach.lock.yml | Updated as part of this pull request. |
| .github/workflows/chaos-pr-bundle-fuzzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/changeset.lock.yml | Updated as part of this pull request. |
| .github/workflows/breaking-change-checker.lock.yml | Updated as part of this pull request. |
| .github/workflows/blog-auditor.lock.yml | Updated as part of this pull request. |
| .github/workflows/aw-issue-clustering.lock.yml | Updated as part of this pull request. |
| .github/workflows/avenger.lock.yml | Updated as part of this pull request. |
| .github/workflows/auto-triage-issues.lock.yml | Updated as part of this pull request. |
| .github/workflows/audit-workflows.lock.yml | Updated as part of this pull request. |
| .github/workflows/artifacts-summary.lock.yml | Updated as part of this pull request. |
| .github/workflows/archivx-agentic-workflows-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/architecture-guardian.lock.yml | Updated as part of this pull request. |
| .github/workflows/archie.lock.yml | Updated as part of this pull request. |
| .github/workflows/approach-validator.lock.yml | Updated as part of this pull request. |
| .github/workflows/api-consumption-report.lock.yml | Updated as part of this pull request. |
| .github/workflows/agentic-token-trend-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/agentic-token-audit.lock.yml | Updated as part of this pull request. |
| .github/workflows/agent-persona-explorer.lock.yml | Updated as part of this pull request. |
| .github/workflows/agent-performance-analyzer.lock.yml | Updated as part of this pull request. |
| .github/workflows/agent-job-health.lock.yml | Updated as part of this pull request. |
| .github/workflows/actions-aw-linter-factory.lock.yml | Updated as part of this pull request. |
| .github/workflows/ab-testing-advisor.lock.yml | Updated as part of this pull request. |
Review effort: Max
Block low-trust cache-memory publication, preserve trigger-scoped trusted dependency-cache saves, and share explicit detection acceptance across cache, drive, and custom-job guards. Add narrowly scoped job cache-mode actionlint compatibility, finalize the proposed ADR, synchronize CTR-019 and cache documentation, and regenerate workflow locks and WASM expectations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
In response to #72543 (comment): Reviewed and completed the generated ADR with rationale, alternatives, consequences, and the revised cache trust boundaries. It is linked in the PR body and remains Proposed pending maintainer adoption. |
|
In response to #72543 (comment): No implementation change is required by this notification, and its no-action outcome is not being treated as verification. This batch independently validates cache trust/save behavior, detection acceptance, and lint compatibility with focused regression tests. |
|
In response to #72543 (comment): No additional change is required by this successful skills-review notification. The concrete findings in the other review threads are addressed separately in this batch. |
|
In response to #72543 (comment): No implementation change is required by this notification. Its no-action result is not being treated as implementation or publication verification; the batch has separate regression coverage. |
|
In response to #72543 (comment): The review completion notification itself requires no code change. Both concrete cache findings are accepted and addressed with low-trust publisher exclusion and restored trusted dependency-cache saves. |
|
In response to #72543 (comment): Completed and linked ADR-72543, including the requested alternatives and the revised low-trust publication and trusted dependency-cache decisions. It remains Proposed pending maintainer adoption, without invented decider identities or claims of human approval. |
|
In response to #72543 (comment): Both recorded findings are accepted and addressed: low-trust events cannot run the cache-memory publisher, and trusted dependency-cache saves are preserved. The managed comment-memory block is unchanged; the individual review threads contain the implementation responses. |
|
@copilot fix ci failures |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
In response to #72543 (comment): The sudo stub and x/net version still match the two fixes in 295924d. This historical CI acknowledgment needs no duplicate fix and does not imply that every current check passes. |
|
In response to #72543 (comment): Commit 295924d is verified in branch history and its fixes remain present. The earlier validation limitations are not superseded by this acknowledgment, so no global-green assertion is warranted. |
|
In response to #72543 (comment): The three referenced main merges are verified ancestors, windows_probe retains checks: read in source and lock, and a46c17c records recompiling all 349 workflows. This historical acknowledgment needs no rerun. |
|
In response to #72543 (comment): The referenced main merges and retained windows_probe caller permission are verified locally. This prior completion acknowledgment requires no duplicate merge or recompilation. |
|
In response to #72543 (comment): Your acknowledgment correctly limits the Smoke OTEL completion notice to run 40687578329. It adds no implementation request and does not establish that other smoke tests or CI checks passed. |
|
In response to #72543 (comment): The prior reply correctly distinguishes container-tool validation from the blocked host.docker.internal warning. This acknowledgment introduces no demonstrated network requirement, so no network.allowed expansion follows. |
|
In response to #72543 (comment): Agreed; the detailed Claude report for run 40687413281 remains PARTIAL despite its completion notice. The update.googleapis.com warning does not establish a required dependency or justify an allowlist expansion. |
|
In response to #72543 (comment): Your response correctly treats the Copilot Auto completion as an individual run notification, not globally green CI. This repeated acknowledgment contains no implementation request. |
|
In response to #72543 (comment): The detailed Codex report for run 40687413283 still says FAIL, despite the completion notice. This acknowledgment requires no code change and does not resolve its blocked or skipped checks. |
|
In response to #72543 (comment): The Gemini reaction only records the start of run 40687412834, as your prior response states. This repeated acknowledgment provides no final result or implementation request. |
|
In response to #72543 (comment): The Pi reaction only announces the start of run 40687413590. Your repeated acknowledgment supplies no final validation result and needs no code change. |
|
In response to #72543 (comment): Agreed; the poem is an acknowledgment rather than a correctness proof or implementation request. The ADR's dependency-cache and provenance limitations still apply, so no change follows from this repeated response. |
|
In response to #72543 (comment): The MAI Bash-tool PASS remains scoped to run 40687561908. This acknowledgment needs no code change and does not override other smoke runs' FAIL or PARTIAL results. |
|
In response to #72543 (comment): Changeset commit 5daa860 is verified as an ancestor of HEAD, and its patch entry describes detection-gated cache hardening. This publication acknowledgment requires no duplicate changeset. |
|
In response to #72543 (comment): Your acknowledgment correctly preserves the Codex FAIL result: six passed, four failed/blocked, and one skipped. The Serena timeout, proxy/server restrictions, unsupported fetch command, and unavailable field discovery remain unresolved; the report does not establish cache-hardening causation or justify unrelated expansion. |
|
In response to #72543 (comment): Agreed; the Copilot run remains partial with an overall FAIL, a failed Playwright-title check, and skipped checks. The browser/network limitation remains unresolved, and this acknowledgment provides no evidence justifying a cache-code change or host.docker.internal allowlist expansion. |
|
In response to #72543 (comment): The detailed Claude report remains PARTIAL, with GraphQL thread resolution unavailable and PR closing skipped, despite its celebratory summary. This acknowledgment neither resolves those limitations nor justifies an update.googleapis.com allowlist expansion. |
|
In response to #72543 (comment): Agreed; the Claude result remains PARTIAL because GraphQL thread resolution was unavailable and PR closing was skipped. These tool/coverage limitations remain unresolved without evidence of cache-hardening causation, so this acknowledgment requires no cache-code change or network.allowed expansion. |
|
@copilot resolve the merge conflicts in this pull request |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Resolved and pushed in e8a8b85 by merging latest main, preserving both specification changes, and regenerating workflow locks. All 349 workflows compiled; focused regressions and impacted Go tests passed. Validation remains incomplete: lint findings/timeouts, a session-reader JavaScript test timeout, and a CodeQL timeout. |

Why
Restore-only cache actions do not restrict the agent job's scoped cache token. Detection acceptance is necessary for persistence but is not cache provenance: low-trust runs must not populate a lineage later consumed by trusted runs. Warning mode can also leave detection successful as a job while its verdict rejects persistence.
An adversarial follow-up identified an incomplete trigger denylist:
issues,discussion, anddiscussion_commentcould pass the publisher guard and receive explicit write access despite the platform's read-only default. The detector's no-output short-circuit can report acceptance without scanning cache-memory, making an allowlisted actor plus attacker-influenced memory a concrete poisoning path. This is fixed with a fail-closed event allowlist.Approach
cache-mode: readunless frontmatter dependency caches require trigger-scoped default access.push,workflow_dispatch,repository_dispatch,delete,registry_package,page_build,schedule, and merge-ref-isolatedpull_request. All other, missing, or unknown runtime events are blocked from publication and use restore-only dependency-cache actions. Mixed and reusable workflows use the original caller's runtime event.cache-mode: write-onlyand require successful agent/detection jobs plus explicit acceptance. Acceptance never substitutes for the event allowlist. Dry-run and restore-only entries do not publish.buildDetectionAcceptedCondition()across cache-memory, drive-memory, and custom-job guards so warning/rejected or missing acceptance outputs cannot authorize persistence.Architecture decision: ADR-72543: Detection-gated cache access (Proposed; maintainer adoption pending).
Important boundaries
Allowed dependency-cache saves intentionally remain outside detection gating and retain direct token write capability before detection. Trigger eligibility does not attest dispatch payloads or checkout/content provenance. Cache contents remain unsigned; no attestation or universal provenance guarantee is claimed.
The detector's internal no-output short-circuit still accepts; the event guard blocks non-allowlisted events even with that accepted result. Runtime-skipped detection, missing acceptance, and rejected/warning verdicts block memory persistence.
No-detection behavior remains unchanged.
gh aw compile --ghesor"ghes": truein.github/workflows/aw.jsonomits generatedcache-modefields, including dry-run fields, and selects compatible artifact pins. No GHES scoped-token guarantee is claimed. Authored custom jobs, third-party cache writers, dependency-cache namespaces, and persistent runner caches remain separate boundaries.Validation
The allowlist fix passed the full lint package, targeted cache/CLI/dry-run/spec regressions, Go golden checks, all four actual WASM binary fixtures, and recompilation of all 349 workflows. The generated-YAML and acceptance matrices cover every currently recognized event, missing and future events, accepted/rejected/failed/skipped/missing detection outcomes, mixed triggers, reusable callers, dispatch, dry-run, GHES, no-detection, and retained write paths.
make agent-report-progresspassed standard Go lint, schema freshness, and impacted tests, but the overall gate remains failing on known custom Go linter findings. An earlier exact-HEAD read-only Go overlay confirmed the original baseline custom-linter failures; this PR is not represented as fully gate-green. Concurrent main-merge changes were preserved and the focused regressions, generated locks, and actual WASM fixtures were revalidated after integration.No live workflow dispatch, exploit testing, or merge of this PR was performed.
Changeset
✨ PR Review Safe Output Test - Run 40687413281
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
update.googleapis.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.