paranoid_
Getting started

Install and run your first verify

paranoid is a single static binary. No account, no server, no setup beyond installing it and having git on your machine.

Install

Run it

From inside a repository an agent has touched, run:

paranoid verify

You do not need to commit anything first. --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), so the same command gates CI.

Check the agent's summary too

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 ways to run it

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 repo

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 then only fail on new ones. See Baseline & suppressions.

Next

Read every verify flag →
See what paranoid checks →
Wire it into CI →