Repository navigation
Releases: neo4j-labs/neo4j-cli
Release list
v1.18.1
Release notes
Highlights
- Aura now knows who's knocking — Aura API and token requests send a
User-AgentofNeo4jCLI/<version> (agent|script|human), so Aura can tell agent-driven, scripted and interactive use apart. Your commands don't change; Aura just gets a slightly better-mannered introduction. Example:neo4j-cli aura instance list --format json
Versions
- neo4j-cli: v1.18.1
Changes
neo4j-cli
Patch
- Aura API requests now identify the caller in the User-Agent header as
Neo4jCLI/<version> (agent|script|human), so Aura can tell agent-driven, scripted and interactive use apart.
v1.18.0
Release notes
Highlights
- Aura agent evaluations —
aura agent evaluation-datasetandaura agent evaluation-runlet you build question sets and score an agent against them on accuracy, tool trajectory, groundedness and relevance, so you can see whether your agent is actually any good. Example:neo4j-cli aura agent evaluation-run create --agent-id <agent-id> --dataset-id <dataset-id> --metric accuracy --metric groundedness --wait --rw
Other changes
neo4j-cli updateandneo4j-cli update checkno longer fail with the GitHub API rate-limit error (HTTP 403, exit code 8): release metadata now comes from a static document on neo4j.sh, so noGH_TOKENorGITHUB_TOKENis needed or read. Everything else is unchanged.
Versions
- neo4j-cli: v1.18.0
Changes
neo4j-cli
Minor
- Adds
aura agent evaluation-datasetandaura agent evaluation-runcommands for managing Aura agent evaluation datasets and runs
Patch
- neo4j-cli update and neo4j-cli update check no longer fail with the GitHub API rate-limit error (HTTP 403 advising to set GH_TOKEN or GITHUB_TOKEN, exit code 8): release metadata is now fetched from a static document on neo4j.sh instead of the GitHub API, so no token is needed or read. Commands, flags, output, and exit codes are otherwise unchanged.
v1.17.0
Release notes
Highlights
-
Desktop projects and tags —
desktop projectanddesktop tagnow cover list/create/update/delete, and the newdesktop dbms update(plus--project/--tagsondesktop connection update) files things where they belong, so your local DBMSes no longer live in one big drawer. Heads-up: indesktopJSON output,projectis nowprojectsand it's an array. Example:neo4j-cli desktop dbms update my-dbms-id --project "Customer 360" --tags prod,eu --rw -
agent-contextgoes on a diet — the default output is now a compact command index (about 18 KB instead of about 465 KB), so agents can spend their context on your problem rather than our help text. Ask for one command's details by path, or pass--fullfor the old tree (schema_versionis now 2). Example:neo4j-cli agent-context aura instance list --format json
Other changes
- Unknown flags and commands now print the error, a one-line usage and a
Run '<command> --help'hint instead of the entire help text. desktop listanddesktop connection listwork again against Neo4j Desktop 2.3, which reportscreatedAtas a number.- On Windows, the
skillcommands find installed agents whenHOMEis unset (via%USERPROFILE%), soskill install --allpicks up Codex.
Versions
- neo4j-cli: v1.17.0
Changes
neo4j-cli
Minor
- New commands for managing projects and tags in a local Neo4j Desktop 2 install:
desktop project list/create/update/deleteanddesktop tag list/create/update/deletemanage the Desktop project and tag catalogs. Create and update print the changed entry, failing with an error if Desktop's returned catalog state lacks it; delete prints a minimal confirmation envelope (idanddeleted: true). The newdesktop dbms updatecommand renames a DBMS, edits its description, or replaces its project/tag assignments.desktop connection updategains matching--project/--tagsflags; both take project/tag names or UUIDs (repeatable/comma-separated) with replace semantics, and an empty value clears the assignments. IndesktopJSON output, theprojectfield on DBMS and connection objects is renamed toprojectsand is now an array instead of a single string. On Desktop versions too old to have the projects/tags endpoints, these commands fail with a clear message telling the user to upgrade Neo4j Desktop 2. - agent-context now prints a compact command index (about 18 KB instead of about 465 KB) by default; pass a command path (e.g.
agent-context aura instance list) for that command's details, or --full for the previous complete tree. schema_version is now 2 andcommandsis a flat list of path/short entries by default.
Patch
- Unknown flags and unknown commands now print the error, a one-line usage and a
Run '<command> --help'hint instead of the full help text with all examples. - Fixed
desktop listanddesktop connection listfailing against Neo4j Desktop 2.3, which reports a connection'screatedAtas a numeric timestamp instead of a string. - On Windows,
skill install,skill list,skill removeandskill checknow detect installed agents when theHOMEenvironment variable is unset (home is resolved from%USERPROFILE%), soskill install --allworks for Codex users (bundled with ChatGPT Desktop on Windows).
v1.16.0
Release notes
Highlights
aura instance createandaura instance deploydrop--version— Aura's create endpoint now picks the Neo4j version itself and rejects requests that try to set one, so the flag has gone. If a script still passes--version, delete it and the script works again. Example:neo4j-cli aura instance create --name my-free-db --type free --rw --format json
Other changes
- Usage analytics events now include the parent process binary name (
pprocess_binary) when it can be found. It's the file name only, with no directory, so your home path stays out of it.
Versions
- neo4j-cli: v1.16.0
Changes
neo4j-cli
Minor
aura instance createandaura instance deployno longer accept the--versionflag- Usage analytics events now include the name of the parent process binary that launched the CLI (
pprocess_binary, file name only, no directory), when it can be determined
v1.15.0
Release notes
Highlights
-
docker create --plugin— Spin up a local container with APOC or Graph Data Science already installed, instead of installing them by hand afterwards. Repeat the flag or pass a comma-separated list. A misspelt name surfaces indocker logs <name>, since the image is the one that installs plugins. Example:neo4j-cli docker create --name gds --plugin apoc --plugin graph-data-science --rw -
Ctrl-C now stops things — In-flight Aura requests and
--waitpolling are cancelled when you press Ctrl-C, so the command exits with 130 (143 for SIGTERM) and doesn't keep going. Press Ctrl-C a second time to force-quit. Example:neo4j-cli aura instance create --type free --wait --rw -
docker delete --remove-volume— Containers made bydocker loadleave their loaded database in aneo4j-cli-<name>-datavolume, and you can now remove it in the same step. On a terminal you're asked (default no). With--yes --forcethe volume is kept and the cleanup command is printed. The CLI only ever removes the volume it created itself. Example:neo4j-cli docker delete movies --remove-volume --yes --force --rw
Other changes
- If the Aura API or its auth endpoint can't be reached, times out or sends an unreadable response, Aura commands now exit 8 (retryable) with an error. They used to crash and exit 0.
- An unexpected internal crash now exits 1 and writes to stderr. It used to exit 0 on stdout, which made failures look like successes.
- A corrupt or unreadable
config.jsonnow gives a clear error that names the file (exit 1) instead of crashing. docker createno longer leaves a running container with a lost password. Credential-store problems now fail before the container starts.docker loadandaura instance loadrun the same checks.aura agentcommands now report a missing organization or project with the standard default-workspace usage error (exit 2).--organization-id/--project-idare now documented once, on theagentgroup.- Aura commands now reject resource IDs containing path or query characters (
/,..,?,#) before sending a request. neo4j-cli dockernow works whendockeris aliased to podman. Listing containers used to fail on podman's JSON format.aura graph-analytics session listnow fetches every page of sessions, not just the first.
Versions
- neo4j-cli: v1.15.0
Changes
neo4j-cli
Minor
docker creategains--plugin(repeatable, or comma-separated) to install Neo4j plugins such asapocorgraph-data-sciencein the new container viaNEO4J_PLUGINS; the command's result lists them. Plugin names are lower-case letters, digits and hyphens, and a name the image does not know shows up indocker logs <name>when the container starts.- Pressing Ctrl-C (SIGINT) or sending SIGTERM now stops a running command promptly: in-flight Aura requests and
--waitpolling are cancelled instead of running to completion, and the command exits with status 130 (143 for SIGTERM). A second Ctrl-C force-quits. docker deletecan now remove the data volume that adocker loadcontainer leaves behind (neo4j-cli-<name>-data, which holds the loaded database): pass--remove-volume, or answer the new prompt on a terminal (default no). With--yes --forceand no--remove-volumethe volume is kept and the command to remove it later is printed. Only the volume the CLI created for that container is ever removed.
Patch
- Aura commands no longer crash and exit 0 when the Aura API or its authentication endpoint cannot be reached, times out, or sends an unreadable response. They now report an error and exit 8 (upstream, retryable), and Aura commands reject a malformed API response with an error instead of crashing.
- An unexpected internal crash now exits with status 1 (it previously exited 0, so a failed command could look successful) and prints its diagnostic to stderr instead of stdout.
- A corrupt or unreadable
config.jsonnow produces a clear error naming the file (exit 1) instead of a crash. docker createno longer leaves a running container whose password is lost. A missing credential store, or a reserved or already-stored credential name (for exampledesktop), now fails before the container is created. If storing the credential fails after the container starts, the password is still shown with a warning; with--no-print-passwordand a generated password the container is removed and the command fails.docker loadandaura instance loadapply the same checks.aura agentcommands now report a missing organization or project with the standardno organization specified; set a default workspace ...usage error (exit 2) instead ofrequired flag(s) ... not set, and the--organization-idand--project-idflags are documented once on theagentgroup instead of on every subcommand.- Aura commands now reject organization, project, agent, instance, GraphQL Data API, authentication-provider, virtual-graph, session, snapshot and customer-managed-key IDs that contain path or query characters (such as
/,..,?or#), with a validation error, before sending any request. - The
dockercommands now work whendockeris aliased to podman. Listing containers (used bydocker create,list,getandload) failed with a JSON parse error because podman reports container names and labels in a different shape. aura graph-analytics session listnow returns all pages of sessions instead of only the first server-defaulted page, so sessions beyond that first page are no longer missing from the output.
v1.14.0
Release notes
Highlights
-
EXPLAINandPROFILEfinally show you the plan — the query planner's output is no longer swallowed:--format jsonand--format tooncarry it as a structuredplan/profileobject, and--format tableprints it as an indented operator tree, withPROFILEalso reporting per-operator rows, dbHits and time. Example:neo4j-cli query "PROFILE MATCH (p:Person) RETURN count(p)" --format table -
EXPLAINof a write no longer needs--rw—EXPLAINnever executes the statement, so making you opt in to writes just to look at a plan was a false alarm.PROFILEdoes execute, so aPROFILEof a write is still refused without--rw. Example:neo4j-cli query "EXPLAIN CREATE (:Person {name: 'Alice'})" --format json
Versions
- neo4j-cli: v1.14.0
Changes
neo4j-cli
Minor
- query now shows the execution plan for EXPLAIN and PROFILE statements: --format json/toon carry it as a plan or profile object, and --format table prints it as an indented operator tree (PROFILE also reporting per-operator rows, dbHits and time). EXPLAIN of a statement that writes no longer requires --rw (EXPLAIN never executes); PROFILE of a statement that writes is still refused without --rw.
v1.13.0
Release notes
Highlights
-
updatenow tells you what you just installed — self-updating no longer leaves you guessing: after a successful swap the CLI prints the release notes for every version you jumped over, newest first, capped at the three most recent (with a link to the full changelog when older releases are trimmed).--no-changelogif you prefer the strong, silent type, and--format json/--format toongain arelease_notesfield pluschangelog_url. Example:neo4j-cli update -
mcp installwrites an env block, so capability gates actually work — in config mode the write / Aura / credential gates were previously unreachable without--bundle; now the entry carries the env block that switches them on. A typed--rwenables all three, or scope them individually with the new--allow-writes,--allow-aura, and--allow-credential-write. In bundle mode the flags seed the extension's settings toggles instead of being quietly ignored, andmcp checkreports an older entry missing the env block as drift. Example:neo4j-cli mcp install --agent claude-desktop --rw --allow-writes
Other changes
graphql cors-policy allowed-origin add/removereturn a clear error (exit 8) instead of panicking when the data API answers with an unexpected 2xx status or a malformed CORS policy body, and authorization failures no longer ask you to report an issue that isn't one.docker create --no-print-passwordhelp text stops pointing at a credential-read command that never existed; it now explains connecting via--credential <name>and resetting the password withadmin user set-passwordplus a credential resync.
Versions
- neo4j-cli: v1.13.0
Changes
neo4j-cli
Minor
neo4j-cli updatenow prints the release notes for the versions between the old and new version after a successful update, newest first and capped at the 3 most recent (with a link to the full changelog when older releases are omitted). Pass--no-changelogto suppress it.--format jsonand--format toongain arelease_notesfield, pluschangelog_urlwhen releases were omitted;--format tableis unchanged.
Patch
- Updated
docker create --no-print-passwordhelp text to no longer reference a credential-read command that does not exist. Now explains how to use the stored credential via--credential <name>and how to reset the password withadmin user set-passwordplus a credential resync. mcp installnow writes an env block, so write / Aura / credential access actually works with Claude Desktop in config mode (previously unreachable without --bundle). A typed--rwenables all three gates; the new--allow-writes,--allow-aura, and--allow-credential-writeflags scope them individually. In bundle mode the flags seed the extension settings toggles instead of being ignored.mcp checkreports a pre-existing entry without the env block as drift.- graphql cors-policy allowed-origin add/remove now return a clear error (exit 8) instead of panicking when the data API responds with an unexpected 2xx status or a malformed CORS policy body, and authorization failure messages no longer say 'please report an issue'.
v1.12.0
Release notes
Highlights
-
aura apireaches any Aura endpoint the CLI has no command for — the endpoint carries its own version segment,{org_id}/{project_id}are filled in from your flags or default workspace, and--format jsonwrites the body byte-for-byte sojqcan have it. Example:neo4j-cli aura api 'v2beta1/organizations/{org_id}/projects' --format jsonNon-GET/HEAD methods need
--rw, and DELETE also wants confirmation — the escape hatch is not a trapdoor. -
New
mcpcommand group for agents that can't run commands themselves — exposes five tools (target discovery, command listing, docs, read-only run, write run) to MCP clients like Claude Desktop; write, Aura and credential access are each off by default. Example:neo4j-cli config set flag.mcp-server true --rw neo4j-cli mcp install --agent claude-desktop --bundle --rwIf your agent can already shell out,
neo4j-cli skill installremains the better fit. -
Instance creation accepts tier names again —
create,deployandloadnow takefree,professional,business-criticalandvirtual-dedicated-cloud, the names the API actually asks for. Previously no value worked at all: the old*-dbnames passed the CLI and were rejected by the API, and the API's names were rejected by the CLI. Example:neo4j-cli aura instance create --rw --name my-instance --type professional --cloud-provider aws --region us-east-1 --memory 1GBThe former names still work and are mapped across;
professional-dsandenterprise-dsare gone and now say so by name.
Other changes
--graph-analytics-pluginon a professional instance now actually enables GDS, instead of being silently ignored while every instance defaulted to serverless.- Aura commands report the API's own message and a non-zero exit code for HTTP 413, 415, 422 and friends, rather than a "please report an issue" note with a success exit code; empty or non-JSON 4xx/5xx bodies keep their status-class exit code too.
aura instance listnow includesorganization_idalongsideproject_id, so the owning organization no longer needs a second lookup.
Versions
- neo4j-cli: v1.12.0
Changes
neo4j-cli
Minor
- New
neo4j-cli aura api <endpoint>command makes an authenticated request to any Aura API endpoint and prints the response. The endpoint carries its own API version segment (v1/instances,v2beta1/organizations/{org_id}/projects), and{org_id}/{project_id}are substituted from--organization-id/--project-idor the default workspace. Supports--method/-X, repeatable--field/-Fand--raw-field/-f(query parameters on GET/HEAD/DELETE, a JSON body otherwise),--inputfor a verbatim body from a file or stdin, repeatable--header/-H, plus--include/-iand--silent. Non-GET/HEAD methods require--rwand DELETE also requires confirmation (--yes --forcewhen non-interactive). With--format jsonthe response body is written byte-for-byte so it can be piped intojq; a failing status yields the usual error envelope and exit code. - New
neo4j-cli mcpcommand group (serve,tool,install,remove,list,check,bundle) behind theflag.mcp-serverfeature flag (NEO4J_CLI_FLAG_MCP_SERVER=1orneo4j-cli config set flag.mcp-server true). This targets agents and chat surfaces with no filesystem or shell access, which therefore cannot invokeneo4j-clithemselves — Claude Desktop being the reference client. Agents that can already run commands are better served byneo4j-cli skill install. Exposes the CLI through five tools:neo4j_cli_list_targets(discovers reachable Neo4j databases),neo4j_cli_list_commands(lists CLI command trees),neo4j_cli_read_docs(returns documentation from the generated skill bundle),neo4j_cli_run(executes read-only CLI commands), andneo4j_cli_run_write(executes destructive CLI commands, requires--rw). To install into Claude Desktop, runneo4j-cli config set flag.mcp-server truethenneo4j-cli mcp install --agent claude-desktop --bundle --rw, which generates a.mcpbbundle and opens the Desktop install UI; omit--bundleto writemcpServers."neo4j-cli"directly intoclaude_desktop_config.json. Write, Aura and credential access are each off by default and are enabled per-connector in the Desktop settings UI. - The
aura instance listoutput now includes anorganization_idfield alongsideproject_id, so the owning organization of each instance is visible without a separate lookup.
Patch
- Aura commands now report the API's own error message and a non-zero exit code for HTTP 413, 415, 422 and other previously unhandled statuses, instead of a "please report an issue" message with a success exit code. A 4xx or 5xx whose body is empty or not JSON now also keeps its status-class exit code rather than reporting a generic internal failure.
aura instance create,deployandloadnow accept the Aura tier names the API expects:--type free,professional,business-criticalandvirtual-dedicated-cloud. Previously no value worked —free-db/professional-db/enterprise-dbpassed the CLI's own check but were rejected by the API with avalidation_error, while the names the API asked for were rejected by the CLI as invalid arguments. The former names are still accepted and mapped to their current equivalents;professional-dsandenterprise-dsno longer exist and are now rejected with a message naming the replacement.customer-managed-key create --typeis unchanged and still takes the former names.- instance create/deploy/load: --graph-analytics-plugin on a professional instance now actually enables the GDS plugin (graph_analytics: plugin). Previously the flag was silently ignored by the v2beta1 API and every professional instance defaulted to graph_analytics: serverless regardless of the flag.
v1.11.0
Release notes
Highlights
-
neo4j-cli admin— the whole administration tree lands at once — four new subtrees for managing a Neo4j DBMS over Bolt via the system database, with full connection-flag parity withquery(--uri,--username,--password,--credential,--env,--debug):admin database— list, get, create, drop, start, stop, with--waitpolling on the lifecycle commands.admin user— list, get, create, drop, rename, set-password, suspend, activate.admin role— list, get, create, drop, grant, revoke.admin privilege—grant/deny/revokeeach with a per-category subcommand (property, entity, graph, label, load, database, dbms) taking the action as a positional argument, plusadmin privilege list. For example:neo4j-cli admin privilege grant property read --on-graph '*' --role analyst.
-
Credential env vars now require opt-in via
accept-env-vars— the CLI no longer reads credentials out of the environment behind your back; when you do enable it, precedence is uniformly flag > env var > stored, across Aura, DBMS and embed credentials. Partial sets are rejected with a missing-variable error instead of quietly falling back. Breaking: DBMS and embed env vars (coveringqueryand the entireadmintree), plus theNEO4J_DATABASEoverride alongside--credential, are ignored until this is on. The explicit--databaseflag is unaffected, and stored credentials are never modified. SetNEO4J_CLI_ACCEPT_ENV_VARS=1for zero-setup CI with no config file at all. Example:neo4j-cli config set accept-env-vars true --rw -
aura virtual-graphfor Aura Virtual Graphs —create,get,list,update,deleteandallowed-configsfor virtual graphs in a project.createprints the initial password exactly once asplain_password, so do read the output.listfollows the API's pagination on your behalf and mentions on stderr when--limithid something from you. Example:neo4j-cli aura virtual-graph create --rw --name sales-analytics --data-source-id ds-abc123 --import-model-id im-xyz789 --cloud-provider gcp --region europe-west1
Other changes
aura instance listoutput now includes the instancestatus.
Versions
- neo4j-cli: v1.11.0
Changes
neo4j-cli
Minor
- Add
neo4j-cli admin databasecommands for database lifecycle management (list, get, create, drop, start, stop) with full connection flag parity withquery - add admin user management commands (list, get, create, drop, rename, set-password, suspend, activate)
- Add admin role commands: list, get, create, drop, grant, revoke
- Add admin privilege commands for managing Neo4j Enterprise privileges via the system database.
grant/deny/revokeeach expose a per-category subcommand (property, entity, graph, label, load, database, dbms) taking the action as a positional argument (e.g.admin privilege grant property read --on-graph * --role analyst), plusadmin privilege list - Add a global
accept-env-varsconfig key (defaultfalse) that gates whether the CLI reads credentials from environment variables. Set it withneo4j-cli config set accept-env-vars true --rw, or setNEO4J_CLI_ACCEPT_ENV_VARS=1for zero-setup CI usage with no config file. When enabled, env vars override stored credentials at the precedence flag > env var > stored, uniformly across Aura (NEO4J_AURA_CLIENT_ID/NEO4J_AURA_CLIENT_SECRET, now synthesized into an ephemeral in-memory credential), DBMS (NEO4J_URI/NEO4J_USERNAME/NEO4J_PASSWORD/NEO4J_DATABASE), and embed (NEO4J_EMBED_*,OPENAI_API_KEY,HF_TOKEN,GEMINI_API_KEY,GOOGLE_API_KEY) credentials; partial sets are rejected with a missing-variable error. BREAKING: DBMS and embed credential env vars are no longer read unlessaccept-env-varsis enabled — this coversqueryand the wholeadmincommand tree. BREAKING: the CLI-212NEO4J_DATABASEoverride applied alongside--credentialnow also requiresaccept-env-vars(the explicit--databaseflag is unaffected). Stored credentials are never modified. aura instance listoutput now includes the instancestatus.- Add
aura virtual-graphcommands for managing Aura Virtual Graphs in a project:create,get,list,update,deleteandallowed-configs.createtakes--name,--data-source-id,--import-model-id,--cloud-providerand--region, plus optional--memory,--maximum-bytes-billedand--wait, and prints the initial password once asplain_password.listreturns every virtual graph in the project, following the API's pagination on your behalf;--limitcaps how many are returned and notes on stderr when more exist
v1.10.0
Release notes
Highlights
-
aura graphqlcommands are out of beta — manage GraphQL Data APIs without flipping a hidden flag, with the full lifecycle plus auth providers and CORS allowed origins. Example:neo4j-cli aura graphql create --instance-id 00000000 --name my-api --memory 256MB --type-definitions-file ./typeDefs.graphql --rw -
--debugeverywhere it was missing — route the underlying API/CLI activity to stderr (stdout stays clean) with secrets redacted, also togglable viaNEO4J_DEBUG=1:- Aura commands echo HTTP request/response, token acquisition, and polling
dockercommands echo the docker invocations they shell out todesktopcommands echo discovery probes and relate API traffic
-
query --databaseplays nicely with--credential— point a saved or desktop credential at a specific database instead of whatever it shipped with. Example:neo4j-cli query "MATCH (n) RETURN count(n)" --credential desktop --database movies --format json
Other changes
query:--databasenow defaults to the connecting user's home database when unset rather than the literal "neo4j", fixing DatabaseNotFound errors on instances like AuraDB Free where home isn't named "neo4j".
Versions
- neo4j-cli: v1.10.0
Changes
neo4j-cli
Minor
- Introduced
aura graphqlcommands for managing GraphQL Data APIs: create, get, list, update, delete, pause, resume, auth-provider, and cors-policy allowed-origin. - Aura commands now accept a --debug flag (also via NEO4J_DEBUG=1) that routes Aura API request/response activity to stderr with secrets redacted.
- Add --debug to docker commands to echo underlying docker invocations (secrets redacted) to stderr
- Add --debug to desktop commands (also via NEO4J_DEBUG=1) that routes Neo4j Desktop discovery and relate API request/response activity to stderr with secrets redacted
- query: --database flag and NEO4J_DATABASE env var can now be combined with --credential to target a specific database
Patch
- query: --database now defaults to the connecting user's home database when unset instead of the literal "neo4j", fixing DatabaseNotFound errors against instances whose home database is not named "neo4j" (e.g. AuraDB Free, where it is the instance DBID).