paranoid_
Getting started

Install and run verify

paranoid is a single static binary. It needs git and no account or server.

Install

Running verify

From inside a repository an agent has touched, run:

paranoid verify

Changes do not need to be committed. --head defaults to your working tree exactly as it sits on disk, uncommitted and staged changes included. --base defaults to the merge-base with your default branch, or HEAD~1 if there is no default branch to compare against.

$ paranoid verify

paranoid v0.1.0
repo: /home/you/project
base: 7db5cfbeaacf
head: worktree (uncommitted changes included)

score: 40/100  verdict: fail

dependencies (1 finding)

  DEP001  critical  requirements.txt:2
      The new dependency requests-toolkit-pro does not exist in PyPI.

test-integrity (2 findings)

  TI001  critical  test_division.py
      A test file that existed at base is deleted at head.

  TI004  high  test_addition.py:10
      A skip was added to an existing test.

head: worktree (uncommitted changes included) means your working tree as it is on disk. The exit code follows the verdict (see Exit codes & CI).

Checking the agent's summary

Add --claims summary.md (any free-text file) or --session <file> (an agent session file; see Sessions & claims for the full list of supported agents). With neither flag, claims are read from the git range's commit messages.

Common invocations

Both --base and --head accept anything git rev-parse resolves: a branch, a tag, a SHA, HEAD~3, origin/main.

SituationCommand
Nothing committed yetparanoid verify
Before merging a feature branchparanoid verify --base main
One specific commitparanoid verify --base abc1234~1 --head abc1234
Last 30 commitsparanoid verify --base HEAD~30 --head HEAD
Between two releasesparanoid verify --base v0.3.0 --head v0.4.0
A teammate's unfetched branchgit fetch origin
paranoid verify --base origin/main --head origin/agent-branch

Adopting on an existing repository

On a repository that has never run paranoid, verify reports every finding in the range, not only the latest change. Run paranoid baseline once to snapshot the current findings. Later runs fail only on new ones. See Baseline & suppressions.

See also

verify flags →
Rules →
Exit codes and CI →