Scripting & CI
GuideHeadless / CI Mode
Wallbreaker runs without the TUI for scripted evaluations and CI pipelines. The CLI accepts a one-shot prompt, runs the agent loop autonomously, and exits:
One-Shot Autonomous Runs
Pass a prompt as a positional argument to skip the TUI entirely:
Reports
Generate reports from run logs without the TUI:
Structured Export
Export findings as structured JSON for downstream analysis:
The --fail-on-finding flag makes the process exit with code 2 if any COMPLIED verdict exists — use it as a CI gate.
CI Pipeline Example
A ready-to-rename GitHub Actions gate lives at .github/workflows/redteam-gate.example.yml:
name: Red-Team Gate
on: [push, pull_request]
jobs:
redteam:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install -e ".[dev]"
- run: wallbreaker export --fail-on-finding --out findings.json
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: findings
path: findings.jsonResume a Session
The TUI autosaves every engagement to sessions/autosave.json. Resume it:
Session Management
Save and load sessions programmatically:
| Command | Description |
|---|---|
/session save [name] | Save current engagement |
/session load <file> | Load a saved session |
/session list | List saved sessions |
Log Format
Every payload, reply, and verdict goes to sessions/run-<timestamp>.jsonl — one JSON object per line. The JSONL format is streamable and parseable by standard tools:
Exporting Findings
| Command | Description |
|---|---|
/report | Markdown findings report to stdout |
/report html | Styled HTML report |
/repro [n] | Copy a repro-pack (payload + transforms + target) for the nth finding |
/export | Structured findings JSON |
Ctrl+S | Generate report in TUI |
Ctrl+R | Copy repro for selected finding |
wb_runs/, wb_images/, wb_artifacts/, findings/). Keep them out of version control and handle them as sensitive data.