Run perch login to sign in to Perch Cloud. The first $5 is free. Since decisions are cached,
running perch again on unchanged code is free. Perch Cloud also scans pull requests in CI, without writing
any workflows.
$ perch scan
checkout.py
ID Line Severity Type Confidence Problem Method
bdc67421 14 P1 (0.8) defect 81% wrong_order place_order
ddc5c917 24 P1 (0.8) defect 92% inverted_condition can_fulfil
cart.py
ID Line Severity Type Confidence Problem Method
287bfb9d 9 P1 (1.0) defect 90% off_by_one subtotal
80d6ebbb 29 P1 (1.4) defect 89% unhandled_null cheapest
✖ 20 problems in 5 files, all failing
Run perch issues to see them worst first, and perch issues <id> to view one.
perch check <id> asks again after you think you've fixed it. It doesn't record anything.
You can extend perch with your own linting rules by adding them to perch.yaml:
-name:private-logswhere:"src/**/*.ts"each:methodensure:>
Keep passwords and access tokens out of logs.
Models
By default, Perch Cloud routes your questions to the best model for answering them. To ask a specific decision model,
override the endpoint, key, and model:
Any endpoint that supports the System One format will work, and so does OpenAI's Decisions API: perch recognizes a
PERCH_BASE_URL ending in /decisions and reads its key from OPENAI_API_KEY when PERCH_API_KEY is not set. Each model gets as many questions per request as it says it
takes. For a model that doesn't say, set PERCH_MAX_QUESTIONS. See the
benchmarks for a comparison.
The graph walk, the questions, and how probabilities turn into a ranking.
Perch files
Location
Contents
.perch/
Generated scan results and cache files, alongside the committed files below. Use --out <directory> to choose another results location.
.perch/rules/
Custom rules split across .yaml and .yml files. Commit these files.
.perch/closed.jsonl
Dismissed findings and their reasons. Commit this file.
perch.yaml
Custom rules. Updated by perch rules add, edit, and remove.
.claude/, .codex/, .pi/, .cursor/
Instructions installed for the selected assistant by perch setup <assistant>.
Development
npm run check # lint, typecheck, test
npm run build # bundle src/cli.js into dist/cli.mjs
To install perch from a checkout, run npm install && npm run build && npm link.
FAQs
Semantic code linting with Jev
We found that @lakeday/perch demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 1 open source maintainer collaborating on the project.
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.
Socket for Origin scans dependency changes in pull requests and flags security risks based on your team’s policies. Now available in Cursor’s App Marketplace.