atlasent-systems-inc/AtlaSent Gate

Enforce real-time authorization gates on deployments and critical CI/CD actions with cryptographic audit trails

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 10, 2026
License
Apache 2.0

Pinned Snippet

workflow.ymlSHA-pinned
uses: atlasent-systems-inc/atlasent-action@e27ce5611b64a74d7b1a5860b4cdc5778ec27135 # v1.3.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
actionProtected action type (e.g., production.deploy, database.migration.apply, hr.employee.offboard). See the AtlaSent catalog for all 19 built-in types. Used for single-eval path; ignored when evaluations or policy-sync is set.no
actorActor identity (defaults to github.actor). Used for single-eval path.no${{ github.actor }}
target-idTarget resource being acted on (service name, artifact id, etc). Threaded into both top-level target_id and context.target_id so policies can gate on what is being deployed, not just who is deploying.no
artifact-digestSHA-256 digest of the artifact being deployed (e.g. sha256:<image-or-plan-hash>). Sent to evaluate as the canonical top-level execution_payload_hash, which the runtime binds into the permit. Re-presented at verify time as payload_hash — a permit issued for one artifact and presented for another fails with PAYLOAD_MISMATCH. Supply the SAME digest to the gate step and to the verify-permit step at the execution boundary so a workflow cannot evaluate one artifact and execute another.no
verify-permitSet "true" to run VERIFY-ONLY mode: re-verify an existing permit at the execution boundary (immediately before the protected step), independent of the gate that issued it. Requires permit-token; also pass action, actor, environment, and artifact-digest so the runtime re-binds the execution context. Fails closed on any missing / modified / expired / replayed / denied / context-mismatched permit. Outputs verified / verify-outcome / verify-error-code.nofalse
permit-tokenThe permit token to re-verify (required in verify-permit mode). Typically the permit-token output of an earlier gate step, passed to the deploy step.no
modeSingle-eval execution model (ignored on batch / policy-sync / verify-permit / release / vqp / governance paths). - "enforce" (default): evaluate → verify → CONSUME the single-use permit in THIS step, then output verified=true. Best for a one-step gate. - "evaluate-only": ISSUE a permit but do NOT verify or consume it. For the two-step EXECUTION-BOUNDARY pattern: this step issues the permit (outputs decision + permit-token UNCONSUMED + permit-issued=true, verified=false); a later `verify-permit: true` step re-verifies and consumes it at the deploy step (the real cryptographic boundary). You MUST gate the protected step on that later step's `verified == 'true'` — never on this step's decision. noenforce
environmentEnvironment (defaults to live for main branch, test otherwise)no
api-urlAtlaSent API URL base. Set to your Supabase project URL ending in /functions/v1 (e.g. https://<ref>.supabase.co/functions/v1). If not set, falls back to the ATLASENT_BASE_URL env var, then https://api.atlasent.io. NOTE: the api.atlasent.io apex 404s unless a custom domain is verified — always set this or ATLASENT_BASE_URL for self-hosted or pilot deployments.no
fail-on-denyDeprecated in V1 pilot mode: deny/hold/escalate always fail closed regardless of this value.notrue
contextJSON context to include in the evaluation (optional). Used for single-eval path. Values here override anything the action derives automatically (e.g. an explicit `approvals` count wins over PR-review-derived approvals).no{}
approvals-fromWhere the `context.approvals` count comes from on the single-eval path. - "pr-reviews" (default): count distinct reviewers whose latest PR review is APPROVED, derived from the GitHub API, and inject as context.approvals + context.approving_reviewers. Lets the `allow-2-approvals-change-window` policy template work out of the box. Requires GITHUB_TOKEN (set `env: GITHUB_TOKEN` to your token secret). - "none": do not derive approvals; supply them via the `context` input. Best-effort and fail-open-to-zero: any API failure yields 0 approvals, which denies a count-gated deploy (the fail-closed direction). nopr-reviews
evaluationsJSON array of evaluation requests for batch mode, e.g. [{"action":"production.deploy","actor":"alice"}]. When set, single-eval inputs (action, actor, context) are ignored.no
wait-for-idEvaluation ID to block on until it reaches a terminal state (allow/deny). Used with hold/escalate decisions that require async approval.no
wait-timeout-msMaximum milliseconds to wait for a terminal decision when wait-for-id is set (default: 600000 = 10 min).no600000
v2-batchEnable the /v1-evaluate/batch endpoint for batch evaluations (default: false, falls back to sequential /v1-evaluate loop).nofalse
v2-streamingEnable Server-Sent Events stream for wait-for-id polling (default: false, falls back to HTTP polling).nofalse
financial-governanceEnable financial governance advisory ("advisory" or "")no""
financial-action-valueDollar value of the financial action being evaluatedno""
financial-action-currencyCurrency code for the financial action valuenoUSD
receipt-signing-key-idKey ID recorded in the evidence receipt for rotation tracking. Paired with the ATLASENT_RECEIPT_SIGNING_SECRET Actions secret so offline verifiers know which key to use. Omit if you do not rotate signing keys or do not need signed receipts. no""
policy-syncWhen "true", run in policy sync mode: read a JSON bundle file and post it to v1-policy-sync. CI fails when the run is rejected or invalid. Cannot be combined with the evaluations or action inputs. nofalse
policy-bundlePath to the policy bundle JSON file, relative to the repository root. Must be a JSON array of policy entries: [{name, body, description?, tags?}]. Required when policy-sync is "true". no
policy-sourceSource label written into the sync run record (defaults to "github-action").nogithub-action
policy-dry-runWhen "true" (default), submit as a dry-run to preview the diff without applying. Set to "false" on the default branch to apply changes live. notrue
insights-org-idOrganization ID for behavior insights campaign evaluation. When set, the action runs a campaign evaluate call after a successful authorization (best-effort: never blocks or reverses the gate decision). no
insights-subject-idSubject ID for insights evaluation. Defaults to the actor value.no
insights-session-countNumber of sessions for the subject, used by session_count trigger campaigns.no""
release-modeWhen "register-and-verify", run as a POST-deploy step against the atlasent-control-plane release-verification surface: 1. POST /v1/release/candidates (register the candidate) 2. POST /v1/release/candidates/:id/verify/runtime 3. POST /v1/release/candidates/:id/verify/deploy Mutually exclusive with the evaluate/policy-sync paths. no""
control-plane-urlatlasent-control-plane base URL (release-mode only).no
control-plane-tokenBearer token for the control-plane. Either set this input or the ATLASENT_CP_TOKEN env var. Distinct from ATLASENT_API_KEY (which authenticates against the runtime). Required when release-mode is set. no
release-target-runtime-urlURL of the deployed atlasent-api runtime to probe (release-mode only).no
release-repoRepository identifier registered with the candidate. Defaults to the current repository.no
release-commit-shaCommit SHA registered with the candidate. Defaults to the current commit SHA.no
release-image-digestOptional image digest (e.g. sha256:...) registered with the candidate.no
release-semverOptional semver string registered with the candidate.no
release-environmentpreview | staging | production. Required when release-mode is set.no
release-fail-on-verifyWhen "true" (default), fail the step if either verify/runtime or verify/deploy returns failed/error.notrue
governance-agentsComma-separated list of constrained advisory governance-agent slugs to run against the current change. Cannot be combined with policy-sync, evaluations, action, or release-mode inputs. no""
governance-change-idGoverned change UUID to attach findings to. Required when governance-agents is set.no""
governance-artifact-fileOptional path to a JSON file mapping agent slug to a pre-built artifact.no""
governance-fail-on-severityMinimum severity (info|low|medium|high|blocker) that fails the step. Findings are advisory by default. no""
governance-fail-on-blockerShortcut for governance-fail-on-severity: blocker.nofalse
slack-webhookSlack Incoming Webhook URL. When set, the action posts an informational Block Kit message to this URL whenever the deploy gate returns deny, hold, or escalate. This is outbound notification only — no interactive approval buttons. For in-flow approvals, use the AtlaSent Slack Approval Bot instead (configured in the AtlaSent console). Best-effort: webhook failures are logged as warnings and never block or alter the gate decision. no""
pr-comment-on-denyWhen "true" (default), post a comment to the pull request when the gate returns deny, hold, or escalate and a PR number is detected in the workflow context. Requires: permissions: pull-requests: write in the workflow, and GITHUB_TOKEN must be available. Best-effort: comment failures are logged as warnings and never block or alter the gate decision. Set to "false" to suppress PR comments. notrue
evidence-bundleWhen set to "true" or a regime identifier, call POST /v1/orgs/{orgId}/evidence-exports after a successful authorization gate. Accepted values: 'false' | 'true' | 'soc2_type_ii' | 'hipaa' | 'gdpr' nofalse
evidence-bundle-daysLookback window in days for the evidence bundle (default: 90).no90
vqp-snapshot-idUUID of the VQP snapshot to re-derive and audit. Mutually exclusive with evaluate, policy-sync, release-mode, governance-agents, and trajectory-verify. no""
vqp-supabase-urlSupabase project URL for the VQP edge functions. Required when vqp-snapshot-id is set.no""
vqp-service-role-keySupabase service role key. Required when vqp-snapshot-id is set.no""
vqp-rerunWhen "true", re-run the AI engine on the re-derived prompt to detect score drift.nofalse
vqp-fail-on-driftWhen "true" (default), fail the job if hash_match=false or verdict_changed=true.notrue
trajectory-verifyWhen "true", run in trajectory-verify mode: call POST /v1/trajectory-verify at this CI step and fail if on_trajectory=false. Use as an intermediate step before each critical execution unit in the authorized trajectory. Requires trajectory-permit-id and trajectory-step-id from the upstream evaluate step that returned an authorized_trajectory. Mutually exclusive with policy-sync, governance-agents, release-mode, and vqp-snapshot-id. nofalse
trajectory-permit-idAuthorized transition spec ID from the upstream AtlaSent evaluate step (evaluation-id output). Required when trajectory-verify is "true".no""
trajectory-step-idStep ID within the trajectory being verified. Must match a step_id in the authorized_trajectory. Required when trajectory-verify is "true".no""
trajectory-step-nameHuman-readable step name written to the job summary and audit log. Optional.no""
trajectory-halt-on-deviationWhen "true" (default), fail the CI job immediately when on_trajectory=false. Set to "false" to surface deviation outputs without failing — useful for dry-run or advisory monitoring pipelines. notrue
namedescription
decisionThe evaluation decision (allow/deny/hold/escalate). Set for single-eval path only.
permit-tokenThe permit token. On the default (enforce) path it is already consumed by v1-verify-permit (audit reference only). In evaluate-only mode it is UNCONSUMED — pass it to a later verify-permit step to re-verify and consume it at the execution boundary. Single-eval path only.
evaluation-idThe evaluation ID for audit trail. Single-eval path only.
proof-hashThe cryptographic proof hash. Single-eval path only.
risk-scoreThe numeric risk score from the Decision response. Empty string when the evaluator did not return a risk assessment. Single-eval path only.
verified"true" when evaluate=allow AND verify-permit=true for ALL evaluations; "false" otherwise (fail-closed). Set on both single and batch paths, and in verify-permit (boundary) mode.
permit-issued"true" when a permit was minted on the single-eval path. In evaluate-only mode this is "true" while verified is "false" (issued but not consumed — re-verify at the execution boundary). "false" on non-allow or when no permit was minted. Do NOT gate a deploy on this — gate on verified.
verify-outcomeCoarse verification outcome from the last permit verification (verified / mismatch / expired / revoked / replay_blocked / invalid). Set on the single-eval and verify-permit (boundary) paths. Empty when verification did not run.
verify-error-codePrecise runtime verify wire code when verification failed (e.g. PAYLOAD_MISMATCH, ENVIRONMENT_MISMATCH, PERMIT_EXPIRED, PERMIT_ALREADY_USED, MISSING_PERMIT). Empty on success. Lets a workflow distinguish WHY a permit was rejected.
decisionsJSON array of per-item decision results for the batch path. Each item: {decision, verified, evaluationId, permitToken, reasons, verifyOutcome}.
batch-idBatch identifier for batch evaluations (either the server-assigned batchId or loop-<ts> for the sequential fallback).
financial-governance-adviceJSON advisory output from financial governance assessment
chain-entryv1.1 immutable audit chain entry (JSON)
snapshotDecision snapshot (JSON)
audit-hashSHA-256 audit chain hash
evidence-receiptSigned per-decision authorization receipt (JSON). HMAC-SHA256 signed when ATLASENT_RECEIPT_SIGNING_SECRET is set as an Actions secret. null on denial.
evidence-bundleFull compliance evidence bundle (JSON, v1 envelope). null on denial.
sync-run-idThe policy sync run ID returned by v1-policy-sync.
sync-statusTerminal status of the sync run (completed, rejected, failed, error).
sync-diffHuman-readable diff summary, e.g. "+3 added, ~1 updated, -2 removed".
sync-summaryJSON {added, updated, removed, status}.
insights-firedJSON array of behavior insights campaigns that fired for the subject.
insights-skippedJSON array of behavior insights campaigns that were skipped, with reasons.
release-candidate-idCandidate ID returned by POST /v1/release/candidates (release-mode only).
release-runtime-statusOutcome status of the runtime verification: passed | failed | partial | error.
release-deploy-statusOutcome status of the deploy verification: passed | failed | partial | error.
release-runtime-resultFull JSON result of the runtime verification.
release-deploy-resultFull JSON result of the deploy verification.
governance-findings-countTotal number of findings emitted across all invoked governance agents.
governance-highest-severityHighest severity emitted across all findings (info|low|medium|high|blocker).
governance-evaluationsJSON array of evaluation summaries per agent.
governance-findingsJSON array of all findings across all invoked agents.
evidence-bundle-sha256SHA-256 hex digest of the generated compliance evidence bundle.
evidence-bundle-idEvidence export record ID returned by POST /v1/orgs/{orgId}/evidence-exports.
vqp-hash-match"true" when the re-derived SHA-256 hash matches the stored prompt_hash (vqp-verify mode only).
vqp-score-deltaNumeric score delta between rerun and original snapshot scores (vqp-verify mode only).
vqp-verdict-changed"true" when the verdict flipped between the original snapshot and the AI rerun (vqp-verify mode only).
vqp-audit-idAudit log entry ID written by v1-verify-vqp for this re-derivation run (vqp-verify mode only).
trajectory-on-trajectory"true" when the current step is on the authorized trajectory; "false" on deviation (trajectory-verify mode only).
trajectory-deviation-typeDeviation type on deviation: step_not_on_trajectory | step_out_of_sequence | forbidden_state_reached | required_step_skipped | time_limit_exceeded | constraint_violation | trajectory_expired. Empty string when on trajectory (trajectory-verify mode only).
trajectory-fidelity-scoreFidelity score [0-1] representing how closely execution tracks the authorized trajectory so far (trajectory-verify mode only).
trajectory-compliance-artifact-idCompliance comparison artifact ID produced when trajectory execution completes. Empty string mid-execution (trajectory-verify mode only).