Start any investigation with:
mesrai status
mesrai auth status
mesrai review --verbose # or any command with --verbosemesrai status shows the consolidated state (auth mode, org, repo, hook, version). --verbose prints the resolved API URL and per-request details.
Common Errors
Command not found: mesrai
The CLI isn’t on your PATH. Reinstall with your package manager’s global flag, or use npx @mesrai/cli <command> for one-off runs.
npm install -g @mesrai/cliyarn global add @mesrai/clipnpm add -g @mesrai/clibun add -g @mesrai/cli
If you installed via the skill installer, re-run curl -fsSL https://review-skill.com/install | bash to fix PATH entries.
AUTH_REQUIRED or 401 Unauthorized
- Run
mesrai auth statusto see the current mode. - If using a team key, verify it’s still active at app.mesrai.com/organization/cli-keys.
- If using personal login, try
mesrai auth loginagain — the refresh token may have expired. - For CI, confirm
MESRAI_TOKEN(orMESRAI_TEAM_KEY) is set in the environment the pipeline runs in. - If self-hosted, confirm
MESRAI_API_URLpoints to the correct instance.
NOT_IN_GIT_REPO
mesrai review requires a git working directory. cd into a repo or initialize one with git init. For mesrai config repo commands, you can pass owner/repo explicitly instead of ..
Review takes very long or seems to hang
Large branches (hundreds of files, thousands of lines) can take several minutes. The default request timeout is 60 minutes — you should see progress in verbose mode.
- Use
--verboseto confirm the request is in flight. - For very large diffs, prefer
--branch <base>or--commit <sha>over working-tree mode: these let the backend clone the same commit instead of receiving inlined file contents. - Override the timeout with
MESRAI_REQUEST_TIMEOUT_MIN=90 mesrai reviewif needed. - Split work across smaller branches when practical.
Files are being skipped from the review
Review honors the ignore-files patterns configured in mesrai config repo. List current settings with:
mesrai config repo showYou can add or remove patterns:
mesrai config repo add-ignore-file . "**/*.generated.ts"
mesrai config repo remove-ignore-file . "**/*.generated.ts"Binary files, images, and lockfiles are skipped by default.
Rate limit reached / Trial exhausted
Trial mode allows 5 reviews per day. Sign in with mesrai auth login or configure a team key via mesrai auth team-key --key mesrai_xxxxx to raise limits. mesrai auth status prints your current usage.
API returned invalid response (expected JSON, got HTML)
Your MESRAI_API_URL is hitting a reverse proxy or Cloudflare Access page instead of the API. Check:
- The URL path (no stray
/api,/v1, etc.). - Cloudflare Access credentials (
CF_ACCESS_CLIENT_ID,CF_ACCESS_CLIENT_SECRET) if applicable. - That the proxy forwards
AuthorizationandCF-Access-*headers intact.
HTTPS required for API URL
The CLI rejects non-HTTPS API URLs for everything except localhost and 127.0.0.1. Provision a valid TLS certificate for your self-hosted instance, or use http://localhost:<port> for local development.
Pre-push hook is not running
- Confirm installation:
mesrai hook status. - Make sure
.git/hooks/pre-pushis executable. - Other hook managers (Husky, Lefthook, pre-commit) may overwrite
.git/hooks/pre-push. Either chain them or reinstall withmesrai hook install --force. - Skip the hook for a single push:
MESRAI_SKIP_HOOK=1 git push.
Decisions (memory) hooks aren't capturing
- Run
mesrai decisions statusto see which agents are wired up. - Re-run
mesrai decisions enable --forceto reinstall integration files. - For Codex, ensure
~/.codex/config.tomlcontains thenotify = ["mesrai", "decisions", "capture", ...]line, or pass--codex-config <path>. - Check the agent actually emits turn-complete events (some older Claude Code configurations don’t).
Device limit reached
Self-hosted instances can enforce device limits per organization. Ask your admin to increase the limit or remove unused devices from the dashboard.
Exit Codes
Use these in scripts and CI pipelines.
| Code | Meaning |
|---|---|
0 | Success. No issues found, or issues were found but below --fail-on. |
1 | Issues found at or above the --fail-on severity. |
2 | CLI usage error (invalid flag, missing argument). |
3 | Authentication or authorization failure. |
4 | Network or API error (timeout, 5xx, invalid response). |
5 | Not in a git repository, or no changes to review. |
For CI, pair --fail-on error with --format json and --output review.json to surface structured results as pipeline artifacts without affecting the exit code logic.
Debugging Tips
--verboseon any command prints the resolved API URL, request IDs, and timings.mesrai schemaoutputs the machine-readable command schema — useful when your agent reports a missing flag.--agentenforces deterministic, machine-readable output; combine with--format jsonwhen scripting.MESRAI_VERBOSE=truepersists verbose mode across multiple commands in a session.
Getting Help
- Report bugs: github.com/mesraiofficial/cli/issues
- Feature requests, configuration questions: your Mesrai account manager, or
support@mesrai.com. - For self-hosted deployments, include
mesrai status --verboseoutput when filing an issue.