Troubleshooting
Short list, real problems. If yours isn't here, email hello@dacip.dev.
Frontend calls = 0 / TS_ANALYZER_UNAVAILABLE
Your repo has TypeScript or JavaScript, but a run prints:
DACIP: this repo has TypeScript/JavaScript, but the TS analyzer could not run —
frontend calls were NOT extracted, so cross-stack findings are incomplete.
DACIP never runs npm install implicitly, so the TS analyzer needs a one-time setup. Install Node.js if you don't have it, then:
dacip toolchain install-ts
This installs typescript@5 into ~/.cache/dacip/toolchain and uses it as a fallback when a repo has no (or an incompatible) TypeScript. DACIP prints this warning loudly on purpose — a missing frontend side must never look like "no findings".
"This looks like a private repo" on a public repo
The free tier checks two things: the GitHub API says the repo is public, and your local HEAD commit exists in that public remote. A stale checkout — local commits not yet pushed, or a branch the remote never saw — fails the second check, and any failure is treated as non-public by design.
Fixes, pick one:
git pull(or push) soHEADexists in the public remotedacip login— GitHub device-flow sign-in, free trial covers 1 private repo
Note that DACIP_OFFLINE=1 also disables the public check entirely, so offline runs on unlicensed repos are gated. See pricing on the landing page for the Team tier ($15/active contributor).
"unsupported platform" from the installer
unsupported platform: <os> <arch>.
Supported: macOS arm64, Linux x86_64.
Those two platforms are what ships today. Email hello@dacip.dev if you need another — that's how we prioritize.
Checksum mismatch on download
The installer verifies every binary against a published SHA256 and refuses to run anything that doesn't match:
checksum mismatch (got ..., want ...).
Download corrupted or tampered — do not run it. Retry, then email hello@dacip.dev.
This is working as intended. Retry the download; if it fails twice, tell us.
PYTHON_PARSE_ERROR warnings
PYTHON_PARSE_ERROR: ... — file excluded from analysis (it may use Python syntax
newer than this DACIP build's interpreter)
A file DACIP can't parse is a reading ceiling, not a defect in your code — it may use syntax newer than the interpreter this build runs on. The file is excluded from analysis and surfaced as a warning, never as a finding. If many files are excluded, your run's coverage block will show it; treat findings in that area as incomplete rather than clean.
Where outputs live
Every dacip investigate run writes to .dacip/runs/<task-id>/:
| File | Contents |
|---|---|
report.md |
human-readable report |
findings.json |
defects, machine-readable |
auth_matrix.json |
route × auth requirement matrix (when routes exist) |
Plus observations.json, evidence.json, coverage.json, and diagnostics.json. DACIP adds .dacip/ to your .gitignore automatically on first run — nothing lands in your commits.
Exit codes
| Code | Meaning |
|---|---|
| 0 | success; for investigate, no new or recurring defects |
| 1 | defects found (investigate), repro failed (verify), or plan/patch invalid |
| 2 | usage error — missing objective, unknown finding id, invalid plan file |
| 3 | run refused or failed: cancelled (Ctrl-C), analysis failure, private-repo gate, invalid license |
| 4 | internal DACIP error — please report it |
1 on investigate is the signal CI should fail on; 3 and 4 mean the run didn't complete, not that the code is clean.
Getting help
Email hello@dacip.dev. Include the command you ran, the exit code, and diagnostics.json from the run directory if there is one. See also Quickstart and the FAQ.

