Troubleshooting
The run exits 2
Exit code 2 means the run could not finish, or the configuration or command line is invalid. The message says which; an outage never passes as a clean review.
No API key configured. Run jevgate auth login, set TYPESAFE_API_KEY, or provide --env-file PATH- A check reads
TYPESAFE_API_KEYfrom the environment, then--env-fileor the repository’s.env, then the key saved byjevgate auth login.jevgate auth statusshows which one a check would use and verifies it. On GitHub Actions, pull requests from forks don’t receive secrets: skip the job for them (if: github.event.pull_request.head.repo.full_name == github.repository). --baseneeds the history back to the fork point. Check out withfetch-depth: 0.TypeSafe HTTP 403 (blocked by the provider's edge protection)- The provider’s firewall rejected a request because of what it contained, such as a test fixture holding an attack string. Find the file with
--dry-run --show-requests, and exclude it withupload_deny; JevGate’s own repository does this for its HTML report’s escaping test. Cannot connect to TypeSafe; request was not sent- A network problem before anything was sent. Rerun; cached answers are kept.
Session API request budget exhausted; restart with an explicit larger --max-requestsmax_requestsor--max-requestscapped the run. Raise it, or check fewer files with--baseor paths;--dry-runestimates what a run will ask.Another JevGate session owns latest.json- Another
checkor--watchis running in the same repository. Stop it first.
Rate limits, overload and server errors (HTTP 408, 429, 500, 502–504, 520–524, 529) are retried up to four attempts before the run gives up, and a timeout or dropped connection is retried once.
Many files are uncertain
A file is uncertain when some of its answers stayed undecided after the follow-up questions. JevGate reports this instead of hiding it or counting the file as clear. --verbose lists each undecided unit and the question it stayed undecided on. It never fails the gate unless you ask for that with --fail-on uncertain.
A finding is wrong
Accept it with jevgate baseline, and record why with jevgate baseline mark wrong PATH:LINE; jevgate baseline stats counts each rule’s mistaken findings. Reporting it with the wrong finding template, with the finding from .jevgate/latest.json and a small piece of the code, is how the rules improve.
A file is skipped
Skipped files are listed with the reason: generated, vendored or minified code, migrations, an unsupported language, or a path outside the upload patterns. generated, tests and the upload patterns in jevgate.toml change what is selected. A file larger than max_file_bytes is not skipped but reported as needs-context, never truncated.
No colors, or escape codes in a log
Agent output is colored only on a terminal. --color never or NO_COLOR turns it off, and --color always or CLICOLOR_FORCE turns it on for pipes and logs.