threemoonslab/Agents Shipgate

The deterministic merge gate for AI-generated agent capability changes. Verifies PRs that change MCP, OpenAPI, OpenAI Agents SDK, Anthropic, Google ADK, LangChain, CrewAI, OpenAI API, Codex config, Codex plugin, n8n, and Conductor OSS workflow JSON artifacts. Writes verifier.json, report.json, pr-comment.md, capability lock/diff review artifacts, and SARIF before your agent-capability change lands. Local-first and static-by-default. Audited exceptions are pinned per call site in tests/test_adapter_static_only.py::ALLOWED_EXCEPTIONS. Apache-2.0.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
configPath to shipgate.yaml.noshipgate.yaml
ci_modeadvisory or strict.noadvisory
fail_onOptional comma-separated severities that fail CI, for example critical,high.no""
fail_on_merge_verdictsOptional comma-separated merge verdicts that fail CI. Supported values: blocked, human_review_required, insufficient_evidence, unknown, mergeable.no""
baselineOptional local baseline JSON path. Strict mode fails only on new findings.no""
diff_fromOptional prior report.json or v0.4 baseline JSON for tool/action surface diff.no""
diff_baseSet to target to use the locally available pull request base branch for diff.no""
verify_modeVerifier mode for the Action. Supported values: verify (default) or scan for legacy direct-scan execution.noverify
base_refOptional local base ref/SHA for PR diff. With diff_base=target on pull_request, defaults to origin/<github.base_ref>. The action never fetches.no""
head_refOptional local head ref/SHA for PR diff and scan. Omit to scan the checked-out workspace.no""
baseline_modeBaseline comparison mode. Supported value: new-findings.nonew-findings
policy_packsOptional comma- or newline-separated declarative YAML policy pack paths.no""
no_pluginsForce third-party check plugins off even when AGENTS_SHIPGATE_ENABLE_PLUGINS is set.nofalse
output_dirOutput directory for reports.noagents-shipgate-reports
upload_artifactUpload reports as a workflow artifact.notrue
check_annotationsEmit GitHub Actions job annotations for source-backed blockers and review items.notrue
check_annotation_limitMaximum number of GitHub Actions annotations to emit.no50
pr_commentPost a short PR comment when running on pull_request.nofalse
pr_comment_stylePR comment renderer. Supported values: capability-review (default) or findings for the legacy v1 findings comment.nocapability-review
check_runCreate/update a GitHub Check Run named by check_run_name with the merge verdict as the check conclusion (mergeable=success, blocked=failure, otherwise neutral) and up to 50 line-level annotations from the PR projection. Requires `checks: write` permission on the workflow.nofalse
check_run_policyCheck Run conclusion policy: advisory, blocked-fails, or require-mergeable.noadvisory
check_run_nameName of the check run created when check_run is true.noAgents Shipgate
github_tokenToken for optional PR comments.no""
shipgate_versionOptional Agents Shipgate PyPI version to install. Empty installs this action source.no""
attestationEmit agents-shipgate-reports/attestation.json from verifier.json/report.json.nofalse
registry_repo_labelOptional repository label copied into attestation org context.no""
org_bundleEmit agents-shipgate-reports/org-evidence-bundle.json for org/fleet aggregation.nofalse
host_auditEmit agents-shipgate-reports/host-grants.json from audit --host.nofalse
org_statusEmit agents-shipgate-reports/org-status.json from org status.nofalse
registry_pathOptional registry path label embedded in org bundle metadata; never mutated by this action.no""
namedescription
statusAgents Shipgate summary status (legacy v0.7 caller; baseline-blind).
critical_countNumber of unsuppressed critical findings.
high_countNumber of unsuppressed high findings.
medium_countNumber of unsuppressed medium findings.
baseline_new_countNumber of new findings when a baseline is used.
baseline_matched_countNumber of baseline-matched findings when a baseline is used.
baseline_resolved_countNumber of baseline findings resolved by the current scan.
adk_agent_countNumber of Google ADK agents statically detected.
adk_dynamic_toolset_countNumber of Google ADK toolsets that were dynamic or unresolved.
report_jsonPath to the generated JSON report.
report_markdownPath to the generated Markdown report.
report_sarifPath to the generated SARIF report.
verifier_jsonPath to verifier.json.
verify_run_jsonPath to verify-run.json.
agent_handoff_jsonPath to agent-handoff.json.
verification_receipt_jsonPath to the validated terminal verification receipt.
request_idContent-addressed verification request identity.
receipt_idContent-addressed terminal receipt identity.
decision_idContent-addressed assembled decision identity.
artifact_set_idContent-addressed artifact-set identity.
run_idDeterministic verify-run input identity from verify-run.json.
pr_comment_markdownPath to the generated PR comment Markdown.
check_annotations_jsonPath to generated GitHub Actions annotation payload.
capability_lock_jsonPath to generated head capability lock JSON.
base_capability_lock_jsonPath to generated base capability lock JSON when base diff is available.
capability_lock_diff_jsonPath to generated capability lock diff JSON when base and head locks are available.
attestation_jsonPath to generated release attestation JSON when attestation is true.
org_evidence_bundle_jsonPath to generated organization evidence bundle JSON when org_bundle is true.
host_grants_jsonPath to generated host-grants inventory JSON when host_audit is true.
org_status_jsonPath to generated organization status JSON when org_status is true.
exit_codeAgents Shipgate CLI exit code.
decisionRelease decision (`blocked`, `review_required`, `insufficient_evidence`, or `passed`). v0.8+; `insufficient_evidence` added v0.14.
blocker_countNumber of blockers in release_decision (v0.8+).
review_item_countNumber of review items in release_decision (v0.8+).
ci_would_failWhether the active fail policy would fail CI (`true`/`false`). v0.8+.
diff_enabledWhether tool_surface_diff was enabled in report.json.
action_diff_enabledWhether action_surface_diff was enabled in report.json.
actions_addedNumber of actions added by Action Surface Diff.
actions_modifiedNumber of actions modified by Action Surface Diff.
actions_removedNumber of actions removed by Action Surface Diff.
should_runTrigger evaluator should_run value from verifier.json (`true`/`false`).
trigger_actionFinal trigger action (`force_run`, `run_shipgate`, `skip_shipgate`, `dry_run`, or `none`).
trigger_rule_idsComma-separated trigger rule IDs that matched.
verifier_verdictVerifier convenience verdict. Prefer `decision` for CI gating; projected from release_decision.
merge_verdictPR/controller verdict projected from release_decision (`mergeable`, `human_review_required`, `insufficient_evidence`, `blocked`, or `unknown`). Use `decision` for CI gating.
can_merge_without_humanTrue only for a verified passed result or a completed deterministic not-applicable skip.
agent_control_stateAuthoritative agent control state (`complete`, `agent_action_required`, or `human_review_required`).
agent_control_reasonDeterministic reason for the authoritative agent control state.
agent_controller_must_stopCompatibility mirror of verifier.json.control.must_stop (`true`/`false`).
agent_controller_stop_reasonCompatibility mirror of verifier.json.control.stop_reason.
agent_controller_completion_allowedCompatibility mirror of verifier.json.control.completion_allowed (`true`/`false`).
trust_root_touchedWhether verifier_summary reports a touched release trust root (`true`/`false`). Review signal; not a second gate.
policy_weakenedWhether verifier_summary reports a policy weakening (`true`/`false`). Review signal; not a second gate.
capability_changes_addedSupporting/provisional count of added members in the capability delta; not a second gate.
capability_changes_modifiedSupporting/provisional count of broadened plus narrowed capability delta members; not a second gate.
capability_changes_removedSupporting/provisional count of removed members in the capability delta; not a second gate.