[Safe Outputs Conformance] SEC-005: Cross-repo target-repo field flagged without allowlist check
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 67/100
Research direction
Read scripts/check-safe-outputs-conformance.sh, especially check_cross_repo, and inspect the targetRepo mappings in actions/setup/js/unified_session_payload.cjs and actions/setup/js/unified_session_render.cjs. Confirm these files only pass through or display metadata, then add the documented SEC-005 exemptions near the mappings. Run bash scripts/check-safe-outputs-conformance.sh and confirm both files pass.
Written by the indexing model from the issue text.
Description
Conformance Check Failure
Check ID: SEC-005
Severity: HIGH
Category: Security
Problem Description
The conformance checker flags two files for supporting a target-repo-shaped field without a visible allowlist validation call:
actions/setup/js/unified_session_payload.cjs(line ~453): mapstargetRepo/target_repointo the unified session payload field extraction table.actions/setup/js/unified_session_render.cjs(line ~276): includestargetRepoin a list of fields rendered into a human-readable session log line.
Both usages are read-only: they copy an already-resolved targetRepo value from session metadata into an observability payload or log line for display. Neither file makes a GitHub API call against a different repository, so SEC-005s allowlist requirement (allowed.*[Rr]epos, validateTargetRepo, checkAllowedRepo) does not apply to them the way it does to a true cross-repo write handler.
Affected Components
- Files:
actions/setup/js/unified_session_payload.cjs,actions/setup/js/unified_session_render.cjs - Check:
scripts/check-safe-outputs-conformance.shfunctioncheck_cross_repo(SEC-005)
<b>Current vs Expected Behavior</b>
Current Behavior
The SEC-005 regex (\btarget-repo\b|\btargetRepo\b|\btarget_repo\b) matches any file that merely references a targetRepo identifier, including pure display/metadata-mapping code, and then requires an allowlist-check pattern in that same file or logs a HIGH failure.
Expected Behavior
SEC-005 is intended to catch handlers that use target-repo to perform a cross-repository GitHub API write without validating against allowed-repos. Pure metadata pass-through/rendering code that never calls the GitHub API should not trip this check. The script already supports a documented exemption via an @safe-outputs-exempt SEC-005 annotation for exactly this situation.
Remediation Steps
- Confirm
unified_session_payload.cjsandunified_session_render.cjsnever passtargetRepoto an octokit call or any cross-repo write path (only read/display it). - If confirmed, add a documented exemption comment (
// @safe-outputs-exempt SEC-005: <reason>) near the targetRepo field mapping in both files, explaining that the field is display/telemetry-only metadata, not a cross-repo write target. - If either file is later changed to perform an actual cross-repo API call using this field, remove the exemption and add a real allowlist check at that call site instead.
Verification
After remediation, verify the fix by running:
bash scripts/check-safe-outputs-conformance.sh
SEC-005 should report PASS for both files.
References
- Safe Outputs Specification: docs/src/content/docs/specs/safe-outputs-specification.md
- Conformance Checker: scripts/check-safe-outputs-conformance.sh
- Run: §39729823556
- Date: 2026-10-22
Generated by ✅ Daily Safe Outputs Conformance Checker · claude · agent · 132.9 AIC · ⌖ 0.552 AIC · ⊞ 5.4K · ◷
- expires on Oct 22, 2026, 9:54 PM UTC-08:00
- Dominant language
- Go
- Stars
- 5.4k
- Forks
- 596
- Avg merge
- 3h 41m
- Merged PRs (30d)
- 829
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from github/gh-aw
-
automation models
Difficulty 1/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
agent-research
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
automated conformance good-first-issue safe-outputs
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
automated conformance safe-outputs
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
FiloSottile/age#758 ·
-
nginx configOpen
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
Maintainers usually reply within 1 day