-
Notifications
You must be signed in to change notification settings - Fork 434
[FAQ] Update: off-platform admission control for safe outputs #29535
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -242,6 +242,31 @@ This approval is enforced by GitHub's infrastructure, not by workflow logic the | |||||
|
|
||||||
| Note that the *policy* — which environments require approval, what safe outputs are configured — is defined by whoever controls the repository. The admission decision for each run can be external; the admission policy itself is internal to repository owners. | ||||||
|
|
||||||
| **Fully off-platform admission control** | ||||||
|
|
||||||
| If your threat model requires an authority completely outside GitHub's control plane — such as an external policy engine, a PAM/PIM system, or a compliance approval workflow — call that system from your gate job before it proceeds: | ||||||
|
|
||||||
| ```yaml wrap | ||||||
| jobs: | ||||||
| external-admission: | ||||||
| runs-on: ubuntu-latest | ||||||
| needs: [agent, detection] # waits for agent output and threat scanning to complete | ||||||
| environment: production-deploy # optional: also adds GitHub-native reviewer gate | ||||||
| steps: | ||||||
| - name: Request admission from external authority | ||||||
| run: | | ||||||
| curl --fail -X POST https://YOUR_POLICY_ENGINE/v1/admit \ | ||||||
|
||||||
| curl --fail -X POST https://YOUR_POLICY_ENGINE/v1/admit \ | |
| curl --fail -X POST https://policy.example.com/v1/admit \ |
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The text says the external call can be "denied", but the example only fails the job on non-2xx/3xx HTTP responses (curl --fail). If the policy engine returns 200 with a denial decision in the response body, this workflow would still proceed and allow safe-outputs to run. Either clarify that denial must be indicated via a failing HTTP status code, or update the example to explicitly check the response and exit non-zero on denial (fail-closed).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@copilot needs agent and detection
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added
needs: [agent, detection]to theexternal-admissionjob in commit 8d408c7. This ensures the external policy call only runs after the agent job completes and threat scanning has finished — consistent with the approval-gate example above it.