cli reference

five commands, and that is all of them. the cli holds no sync state: it talks to the local daemon over an authenticated loopback http api, and so does the mcp server.

anything that is not on this page does not exist. crosscode used to have around forty-five commands covering tasks, claims, handoffs, proposals, checkpoints, validation profiles, and billing. they were removed, not hidden.

global flags

flagpurpose
--jsonprint compact json on one line instead of pretty-printed json
--version, -Vprint the cli version
--helpprint usage for the program or a command

crosscode start

sets this checkout up end to end, and is safe to re-run. it signs you in with github, attaches the checkout to a project, starts the daemon, and installs the mcp server, the skill, and the pre-edit hooks for your coding agent.

crosscode start
crosscode start --no-browser   # print the sign-in URL instead of opening a browser

use --no-browser on a remote shell or in ci. restart your agent afterwards so it picks up the new mcp server.

crosscode invite

prints a link that invites a teammate to this project. the link is the whole output.

crosscode invite
# https://www.getcrosscode.dev/join/7f3a9c2e

the join page checks the invitee actually has access to the repository before it hands them anything.

crosscode join <code>

redeems an invite code in this checkout, then sets it up exactly as start would. the code is a positional argument in the form printed by the join page.

crosscode join CC-7F3A-9C2E
crosscode join CC-7F3A-9C2E --no-browser

crosscode status

shows what this checkout's daemon is doing.

crosscode status --json
{
  "value": {
    "branch": "main",
    "connected": true,
    "paused": false,
    "cursor": 412,
    "pendingConflicts": 0,
    "peers": []
  }
}

peers lists who else is working on this branch and which paths they touched recently. presence is in-memory in the service, so it reflects right now rather than history.

crosscode stop

stops the daemon for this checkout. syncing stops; nothing is uninstalled and nothing in your repository changes.

crosscode stop

output envelope

with --json, success is wrapped in value so it is symmetric with the failure shape, and an agent can branch on which key is present. progress goes to stderr, so stdout stays a single parseable object.

{"value": {"branch": "main", "connected": true, ...}}
{"error": {"code": "NOT_A_GIT_REPOSITORY", "message": "Crosscode runs inside a Git repository", "hint": "cd into your project first."}}

without --json the value is printed bare, because the envelope is only noise for a human reader. common error codes are NOT_A_GIT_REPOSITORY, USAGE_ERROR, and COMMAND_FAILED.

the mcp server

the same package installs a crosscode-mcp binary, which is what your coding agent connects to. it exposes four tools, status, conflicts, resolve, and pause, and every response carries any pending conflicts whether the tool was asked for them or not. see mcp client setup.