Scan the graph
Reads your codeindex graph to trace call paths, data flows, and imports. Every function checked against your compliance ruleset — HIPAA, SOC 2, and more.
PACE reads your code, scans every function for compliance violations, verifies fixes on an isolated branch, and produces audit-ready evidence — all from the CLI.
pip install pace-agents
$ pace scan [CRITICAL][PHI-001]: PHI in logs --> patient.py:log_visit [HIGH ][SEC-003]: hardcoded secret --> config/db.py:connect Scan complete — 2 findings
$ pace fix [fix] PHI-001 (log_visit) ... [fixed] 1 attempt Branch: fix/phi-001-4a1f [fix] SEC-003 (connect) ... [fixed] 2 attempts Branch: fix/sec-003-8b2c Fix complete — 2 fixed, 0 blocked.
$ pace report Report written — 2 finding(s) fixed: 2 .pace/report-20240115T143022.md .pace/report-20240115T143022.json .pace/report-20240115T143022.html
Most compliance tools stop at policies or generic linting. PACE works at the code level and closes the loop from finding to fix to auditor-ready proof.
Reads your codeindex graph to trace call paths, data flows, and imports. Every function checked against your compliance ruleset — HIPAA, SOC 2, and more.
Generate patches, apply them to a feature branch, rerun your existing test suite, and re-check findings. A fix only counts when it passes all three gates.
Generate timestamped markdown, JSON, and HTML artifacts. Each finding maps to its control reference — ready to hand to an auditor without manual formatting.
pace scan --diff HEAD~1 — scans only changed files and exits non-zero when new violations are introduced. Drop it into any pipeline.
PACE is an acronym. Each letter is a specialist agent with a distinct role in the fix loop — the same separation of concerns you'd want from a human security review.
Reads the full audit journal and ranks findings by severity. Groups related violations that share a root cause so fixes compound instead of collide.
Writes a concrete diff for each finding group using the fix strategy hint and full cross-function audit context. Revises on failure with structured feedback from the Evaluator.
Applies the patch to a feature branch and runs the project's existing test suite. Returns pass/fail output. Does not judge correctness — that's the Evaluator's job.
Re-scans the patched branch. Accepts only if tests pass, the original finding is gone, and no new violations were introduced. Rejects with context — the Author retries up to the configured cap.
Planner → Author → Coder → Evaluator — on reject, cycles back to Author with failure context. After the retry cap, the finding is flagged needs-human-review and the loop moves on.
PACE is designed to be inspectable, conservative, and useful under real audit pressure.
You can review the diff, see the test result, and trace every finding to a specific control and evidence artifact. The code graph comes from codeindex — a deterministic, local index with no inference. Nothing about the workflow depends on blind trust.
Find the violation. Verify the fix. Hand over the proof.