Skip to content

Strengthen TLA+ token-lifetime checks for failed jobs - #65904

Merged
pelikhan merged 4 commits into
mainfrom
copilot/review-tla-plus-specification
Oct 5, 2026
Merged

pelikhan merged 4 commits into
mainfrom
copilot/review-tla-plus-specification

Conversation

Copilot AI commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

The compiler/job/secrets model checked token cleanup after successful jobs but did not assert it after failures. The review also found that the pinned TLC checksum no longer matched the upstream v1.8.0 asset.

  • Model coverage: Require failed agent and safe-output jobs to release their modeled tokens. Add a synthetic token-retention fault to verify the invariant catches a regression; it does not indicate a confirmed product vulnerability.
  • Checker and workflow: Update the TLC checksum to the digest published for the current release asset, and refresh the representative traces and compiled workflow.
  • Results: Exhaustive TLC checks passed across 10 secure configurations, 21 negative controls, and 8 witnesses. Python and Go conformance tests passed. Automated review was unavailable, and CodeQL timed out.

Copilot AI and others added 2 commits October 5, 2026 16:18
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

Great work strengthening the token-lifetime invariants in the TLA+ security model! Exhaustive checks across 10 configurations, 21 negative controls and conformance tests make this look ready for review. 🎯

Generated by ✅ Contribution Check · copilot · auto · 47.1 AIC · ⌖ 8.91 AIC · ⊞ 9.2K · ◷

@pelikhan

pelikhan commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator

@copilot the post step of actions/create-action-token automatically invalidates the minted token. Integrate in TLA+ specification.

@pelikhan

pelikhan commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator

@copilot actions also automatically prevent cross-job token communication through action outputs

@pelikhan
pelikhan marked this pull request as ready for review October 5, 2026 17:26
Copilot AI balanced review requested due to automatic review settings October 5, 2026 17:26
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

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.

Copilot review overview

🟡 Changes recommended

The queue schema restriction conflicts with an existing test that still expects expression-valued queues to pass validation.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Strengthens gh-aw’s security model to check token cleanup after failed jobs, without claiming a product vulnerability.

Changes:

  • Extends token-lifetime invariants and adds a synthetic retention fault.
  • Refreshes the TLC checksum, example metadata, and compiled workflow.
  • Restricts concurrency queue values to literals.
File Description
specs/​workflow-security/​README.md Documents failure-path checks and updated checksum.
specs/​workflow-security/​examples.json Refreshes model and runtime hashes.
specs/​workflow-security/​CompiledWorkflow.tla Strengthens invariants and adds retention fault.
specs/​workflow-security/​check.py Registers the fault and updates checksum.
pkg/​workflow/​schemas/​github-workflow.json Limits queue values to single or max.
.github/​workflows/​daily-workflow-security-model.md Updates pinned TLC checksum.
.github/​workflows/​daily-workflow-security-model.lock.yml Synchronizes the compiled workflow.

Comment on lines +45 to +46
"type": "string",
"enum": ["single", "max"],

Copilot AI commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

@copilot the post step of actions/create-action-token automatically invalidates the minted token. Integrate in TLA+ specification.

Modeled token revocation as the actions/create-github-app-token post step after successful or failed safe-output jobs, with a synthetic failure-path retention control and saved trace. Commit: e71f2a0.

@pelikhan
pelikhan merged commit 427d929 into main Oct 5, 2026
2 of 3 checks passed
@pelikhan
pelikhan deleted the copilot/review-tla-plus-specification branch October 5, 2026 17:35
Copilot AI restored the copilot/review-tla-plus-specification branch October 5, 2026 17:45

Copilot AI commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

@copilot actions also automatically prevent cross-job token communication through action outputs

Modeled the masked token as a same-job action output and GitHub Actions redaction at the job-output boundary, with a synthetic bypass mutation and trace for NoCrossJobTokenOutputs. Commit: 6436e29.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.91.0

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.

3 participants