chuzom/loophole
CI for AI agents — a swarm works until a falsifiable verifier PROVES the goal is done. Bring your own agent; loophole is the trusted gate.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| contract | Path to the Goal Contract (from `loophole init`). Ignored when `goal` is set. | no | loophole.json |
| goal | Ad-hoc goal text — an alternative to --contract for a one-off check. Requires `verify`. | no | "" |
| verify | Hard verifier command for an ad-hoc `goal` (exit 0 = done). | no | "" |
| workspace | Directory the swarm works in. | no | . |
| executor | A registered framework adapter (see `loophole executor list`). | no | "" |
| executor-command | Bring-your-own executor CLI, e.g. 'claude -p {task}'. Sandboxed either way; the verifier boundary is unchanged. | no | "" |
| planner-model | provider:model for planning. | no | chuzom:moderate |
| executor-model | provider:model for execution. | no | chuzom:complex |
| max-rounds | Round circuit-breaker. | no | 25 |
| version | loophole-agents version to install (pip version spec). Empty = latest from PyPI. | no | "" |
| fail-on | 'not-done' (default) fails this step when the run isn't verified done; 'never' always exits 0 so the workflow can branch on the outputs instead (report-only mode). | no | not-done |
| comment | Post/update a sticky PR comment with the Residual-Risk Report, and create a Check Run annotated with any write-allowlist violations. Only meaningful on pull_request-triggered workflows; requires `permissions: { pull-requests: write, checks: write }` in the caller's workflow (the default GITHUB_TOKEN otherwise lacks these scopes). | no | false |
| github-token | Token used for --comment. Defaults to the job token. | no | ${{ github.token }} |
Outputs
| name | description |
|---|---|
| status | 'done' | 'paused' | 'failed' |
| verified-done | 'true' | 'false' |
| exit-code | loophole's own exit code: 0 = done, 1 = not done, 2 = config error |
| result-json | Absolute path to the full machine-readable run result. |