Repository navigation
Keep Actions log content at baseline integrity - #15768
Conversation
Separate job-log content from repository metadata and prevent text or search-shaped log responses from gaining writer integrity through singleton fallback. Preserve repository-visibility secrecy and cover real WASM filtering and REST response enforcement with synthetic fixtures. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f18997f9-a895-476a-909c-851742db05bd
🔒 mcpg Read-Only Stress — defaultSurface coverage: MCP tool calls + proxied CLI (REST) + GraphQL mutations
Overall: INCONCLUSIVE
|
There was a problem hiding this comment.
🟡 Changes recommended
The missing job-log route falls back to get_file_contents with merged integrity, allowing opaque logs or redirects to bypass the approved minimum in normal proxy mode.
1 open issue
What changed in this PR
This PR assigns GitHub Actions job logs baseline none integrity, preventing arbitrary workflow output from receiving repository-writer endorsement. Repository-visibility secrecy labels and repository metadata behavior remain unchanged.
Changes:
- Give job logs baseline integrity and exclude them from the approved server-metadata fallback.
- Add Rust and real-WASM regression coverage for response shapes, filtering, and REST enforcement.
- Update labeling documentation to describe log integrity and visibility-based secrecy.
| File | Description |
|---|---|
internal/proxy/job_logs_guard_test.go |
Adds real-WASM labeling and REST enforcement tests. |
guards/github-guard/rust-guard/src/lib.rs |
Excludes logs from approved metadata fallback and adds regressions. |
guards/github-guard/rust-guard/src/labels/tool_rules.rs |
Assigns baseline integrity while preserving visibility-based secrecy. |
guards/github-guard/rust-guard/src/labels/mod.rs |
Updates job-log integrity expectations. |
guards/github-guard/README.md |
Documents log integrity and secrecy behavior. |
guards/github-guard/docs/LABELING.md |
Clarifies visibility-based log secrecy and baseline integrity. |
guards/github-guard/docs/INTEGRITY_TAG_SPEC.md |
Updates resource and response integrity rules for logs. |
guards/github-guard/docs/IMPLEMENTATION.md |
Describes log secrecy and fallback handling. |
guards/github-guard/docs/IMPLEMENTATION_SUMMARY.md |
Aligns summary tables with job-log labeling. |
Review effort: Max (auto)
Map the job-specific log endpoint to get_job_logs with job_id instead of generic file-content fallback. Extend route and real-WASM enforcement regressions to job, run, and run-attempt logs, including JSON arrays without fine-grained labels. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f18997f9-a895-476a-909c-851742db05bd
|
@copilot address review feedback |

Summary
GitHub Actions logs can contain comments, build output, and workflow inputs without repository-writer endorsement. Hosting those bytes on GitHub does not establish approved integrity.
get_job_logsbaselinenoneintegrity for public and private repositories while preserving repository-visibility secrecy labels.get_job_logsrather than generic file-content fallback. Job, run, and run-attempt log endpoints now use the same integrity rules.Verification
cargo fmt --manifest-path guards/github-guard/rust-guard/Cargo.toml -- --checkmake agent-finished— passed after the routing follow-up: formatting, build, lint (0 issues), Go tests, and all 688 Rust guard tests.All fixtures are synthetic and use local test servers.