Skip to main content
GraphCheck fails closed: every error has a stable code, a message, and a fix. Run graphcheck debug first for almost any problem below - it loads and validates your check suites and probes the connection, without executing your checks.

Project and profile setup

Connecting to Neo4j

These come from the connector and mostly map onto everyday setup mistakes.

Read-only enforcement

GraphCheck refuses to run anything Neo4j classifies as write-capable, and on Enterprise and Developer editions it also checks the configured user’s actual role before any checks run. The required setup is Neo4j’s built-in reader role (plus the default PUBLIC role) and nothing else - not a custom role with ACCESS/MATCH grants.

Running checks

engine.timeout on its own does not fail the run: the timed-out check is marked partial rather than erroring the whole run. But it does not override an unrelated error - if an earlier error-severity fail or errored check already occurred, the run still exits 1 for that reason. A run affected only by engine.timeout (nothing else wrong) exits 2. There is currently no CLI flag or graphcheck.yml field to raise the time budget directly; narrowing what you select or run, or sampling, are the only user-facing levers today.

Where to look next

  • graphcheck debug (or graphcheck debug --json for machine-readable output) re-runs the same connection and capability probes GraphCheck uses internally, and validates your check suites, without executing any checks.
  • Errors show up in different places depending on what failed. A run that couldn’t start at all (status: failed) carries its error in run.error. A run that completed or went partial (status: complete/partial) carries per-check errors in that check’s own checks[].error instead, and run.partial_reason gives the run-level summary of why coverage is incomplete.
  • Every run’s results.json and offline HTML report expose all of the above.
  • See CI setup for how these map onto exit codes in a pipeline, and Check reference for check-specific catches/does not catch behavior.