ci(#6026): route actor PAT secrets into behaviour job - #6028
Conversation
Expose TEST_ACTOR_{WRITE,TRIAGE,OUTSIDER}_PAT to the behaviour
runner env so scenarios can authenticate as those identities once
drivers consume them (fullsend-ai#6027).
Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
PR Summary by QodoRoute actor PAT repo secrets into behaviour job environment
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
|
🤖 Finished Review · ✅ Success · Started 9:19 AM UTC · Completed 9:31 AM UTC Commit: |
Site previewPreview: https://439c6fc3-site.fullsend-ai.workers.dev Commit: |
Code Review by Qodo
1. e2e-testing.md disallowed directory
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
ReviewFindingsMedium
Low
Labels: PR modifies e2e CI workflow and e2e testing documentation |
waynesun09
left a comment
There was a problem hiding this comment.
Approving. Verified the fstest-* account scoping directly via the GitHub API before signing off: none of fstest-write/fstest-triage/fstest-outsider are fullsend-ai org members, and all three show only read permission on both fullsend-ai/fullsend and fullsend-ai/agents (including fstest-write, despite its "write-level" label — its actual write capability is scoped to the disposable pool-org test-repo-NN infrastructure per docs/guides/dev/behaviour-testing.md, not production repos). So even if a PAT leaked via the untrusted-code-exfiltration path I flagged, the blast radius is contained — it cannot write to the real codebase. CI green, no other blockers.
|
🤖 Finished Retro · ✅ Success · Started 7:39 PM UTC · Completed 7:51 PM UTC Commit: |
Retro: PR #6028 —
|
| Dimension | Agent | Human |
|---|---|---|
| Protected path flagging | ✅ Medium | Not flagged (implicit) |
| PAT scope limitations | ✅ Low | ✅ Part of larger finding |
| Exfiltration chain tracing | ❌ Missed | ✅ Full 5-step chain |
| Blast radius verification | ❌ Not attempted | ✅ GitHub API verification |
| Sequencing risk (secrets before consumption) | ❌ Missed | ✅ Deferred to #6027 |
Rework Rate & Efficiency
No rework — single commit, single review cycle. The agent ran once (13 min, ~6 min agent thinking + ~3 min challenger). The human review took ~4 hours wall-clock (13:37-19:20 UTC) including the approval and follow-up deferral comment. Total time to merge: ~10 hours. This is reasonable for a security-sensitive CI change requiring human judgment.
Evidence for Existing Issues
- #2933 (review agent should flag CI workflow security anti-patterns): PR ci(#6026): route actor PAT secrets into behaviour job #6028 provides additional evidence. The agent's security sub-agent identified PAT scope as a generic concern but did not recognize the
pull_request_target+ untrusted checkout + secrets pattern as a CI security anti-pattern. - fullsend-ai/agents#535 (review agent should escalate security sub-agent depth based on PR labels/file-path signals): The PR carried
component/ciandrequires-manual-reviewlabels and modified.github/workflows/e2e.yml. Despite these signals, the security sub-agent ran at standard depth, finding only a Low-severity concern while the human found a Medium-severity exfiltration chain. - #5221 (behaviour debug artifacts can exfiltrate secrets): PR ci(#6026): route actor PAT secrets into behaviour job #6028 adds three more PAT secrets to the behaviour job environment, expanding the blast radius of the artifact exfiltration vector documented in e2e: behaviour debug artifacts can exfiltrate secrets without redaction #5221.
Autonomy Assessment
This PR is counter-evidence for autonomous approval of CI workflow changes that modify secrets. The agent's review was materially insufficient for the security dimension — it missed the primary concern and could not perform blast-radius verification. The requires-manual-review label was correctly applied. No autonomy increase is warranted for this class of change.
Proposals filed
- Document pull_request_target + secrets security review checklist in ci-workflows.md (in
fullsend-ai/fullsend) - Document fstest-* test actor account permission scope for blast-radius assessment (in
fullsend-ai/fullsend)
Summary
TEST_ACTOR_WRITE_PAT,TEST_ACTOR_TRIAGE_PAT, andTEST_ACTOR_OUTSIDER_PATinto the behaviour job env in.github/workflows/e2e.yml(same names as repo secrets).e2e-ok-to-test.ymlalready usessecrets: inherit— no change needed.Closes #6026.
Note: the
blockedlabel on #6026 can be cleared — #6024 landed and the secrets exist. Driver/step consumption remains #6027.Test plan
e2e.ymlmaps all three${{ secrets.TEST_ACTOR_*_PAT }}entriese2ejob is unchangedblockedon test(behaviour): route write/triage/outsider actor PAT secrets into the behaviour job #6026Made with Cursor