Skip to content

CLI reference

Run Point inside the Git repository that owns the context.

point stash

point stash \
  [--title <text>] \
  [--session-file <session.jsonl>] \
  [--source-agent <name>] \
  [--source-session <id>] \
  [--parent <point>]... \
  [--branch <name>] \
  [--no-active-parents]

Preserve unfinished participant-visible Session events as a Local Stash Point. If --session-file is omitted and standard input is piped, Point reads JSONL from standard input.

Each non-empty line must be a JSON object with a non-empty type:

{"id":"e1","type":"message","role":"user","content":"Keep retry bounded."}
{"id":"e2","type":"message","role":"assistant","content":"I will verify the failure path."}
{"id":"e3","type":"tool_call","call_id":"t1","name":"test","arguments":{"target":"retry"}}
{"id":"e4","type":"tool_result","call_id":"t1","name":"test","content":"passed"}

The CLI uses active resumed Points and the current Point Branch Tip as parents. Saving advances that branch; the first normal save creates master.

--no-active-parents creates intentionally unrelated work. It is not needed for normal saving.

point list

point list

List immutable Points, type, visibility, branch tips, and title.

point show

point show <point-or-branch> [--full]

Inspect a Point without changing Session lineage. --full renders its saved events. --json returns structured events.

point resume

point resume [<point-or-branch>...] [--branch <name>]

With no argument, Resume selects master. It traverses every reachable parent in oldest-to-newest order and returns each saved Session exactly once. The selected tips become parents of the next saved Point.

An exact Point ID resumes detached by default. A named Point Branch remains active. Use --branch to create or continue an explicitly named direction.

Several arguments create multi-parent lineage. Point does not merge their natural-language content.

point branch

point branch
point branch <name> [<start-point>]

List Point Branches or create one at a Point. Point Branches are Git Refs under refs/points/heads/ and are independent from repository Git Branches.

point push

point push <point-or-branch> [--remote <name>] [--with-code]

Publish the selected Point and every ancestor required to reconstruct it. When the target is a local Point Branch, Point also publishes that movable Ref. Unrelated local Points stay local.

--with-code atomically includes the current Git Branch in the same Git push.

point fetch

point fetch [--remote <name>]

Fetch immutable Point nodes and published Point Branches. Remote branches appear as <remote>/<branch>. A unique remote master can be resumed with plain point resume when no local master exists.

point hooks

point hooks install
point hooks status

Install or inspect the optional post-commit integration. Point refuses to overwrite an unrelated existing Hook.

The Hook creates a Commit Point only after an Agent adapter has prepared real Session events for the same Git base and staged tree. A normal commit without prepared events creates no Point.

Integration commands

Agent integrations use these commands; people normally do not:

point _prepare-commit --session-file <session-segment.jsonl>
point _cancel-commit
point _post-commit

_prepare-commit records the new Session segment, active Point parents, Point Branch Tip, current Git HEAD, and staged Git tree. The Hook calls _post-commit after a successful commit. If the commit fails, the integration calls _cancel-commit so stale context cannot attach to a later change.

Machine-readable output

Place --json before the subcommand:

point --json show master --full
point --json resume

Agent environments normally provide a stable Session identifier automatically. Integrations without one can set POINT_SESSION_ID; this plumbing is intentionally absent from the normal user workflow.