Treeship
CLI reference

Command matrix (generated)

Every visible treeship command, argument, and flag — generated from the binary's own help output.

This page is generated from the CLI's own --help output, so it cannot drift from the binary. For narrative documentation and examples, use the hand-written pages in this section; when they disagree with this page, this page is right and the other page has a bug.

Global flags on every command: --config <PATH>, --format <text|json>, --quiet, --no-color.

treeship quickstart

Guided first-time setup in 90 seconds

treeship quickstart [OPTIONS]

treeship init

Set up a new Treeship -- generates a keypair and config

treeship init [OPTIONS]
OptionDescription
--name <NAME>Human-readable name for this ship (optional)
--template <TEMPLATE>Apply a trust template (name or file path)
--forceOverwrite an existing config
--globalExplicitly target the user-global keystore (~/.treeship/)

treeship add

Auto-detect and instrument installed AI agent frameworks

treeship add [OPTIONS] [AGENTS]...
ArgumentDescription
[AGENTS]...Specific agent frameworks to instrument (e.g. claude-code hermes)
OptionDescription
--allInstrument all detected agents without prompting
--dry-runShow what would be done without making changes
--discoverRead-only: list every detected agent with surface, connection, coverage and confidence -- without modifying any config. Honors the global --format flag (text or json)

treeship wrap

Wrap any command -- run it and attest the execution

treeship wrap [OPTIONS] -- <CMD>...
ArgumentDescription
<CMD>...The command to run (everything after --)
OptionDescription
--actor <URI>Actor URI (default: ship://<your-ship-id>)
--action <LABEL>Action label (default: executable name)
--parent <ID>Parent artifact ID -- links this into a chain
--pushPush the artifact to Hub immediately after attesting

treeship attest

Sign an attestation artifact

treeship attest [OPTIONS] <COMMAND>

treeship attest action

Record that an actor performed an action

treeship attest action [OPTIONS] --actor <URI> --action <LABEL>
OptionDescription
--actor <URI>Actor URI -- who performed the action
--action <LABEL>Action label -- what was done
--v2Emit a treeship/action/v2 receipt (mandate + optional effect/runtime) instead of action.v1. Requires --grant or --grant-file
--grant <ID>Workspace grant id (grn_…) this action runs under. Loads .treeship/grants/&lt;id&gt;.json and walks parent_grant_id to build the mandate chain. Mutually exclusive with --grant-file
--grant-file <PATH>Path to a Grant JSON file (same shape treeship grant issue writes). Mutually exclusive with --grant
--revocation-path <PATH>Revocation resolver path recorded on the mandate (e.g. hub://acme/revocations). Defaults to hub://local/revocations. Without a wired resolver, treeship verify reports authority as unverified — never a false pass
--audience <AUD>Audience this action targeted. Defaults to the grant's audience
--effect-confidence <LEVEL>Actor's effect-confidence claim: verified | partial | ambiguous | unknown | not_verified. Implies an effect block
--finality <STAGE>Lifecycle stage: not_attempted | initiated | finalized | failed | indeterminate. Implies an effect block
--readback <sha256:HEX>Externally-observed post-state hash (sha256:…). Independent evidence the actor cannot mint. Implies an effect block
--context-snapshot <sha256:HEX>Hash of the context the agent acted from. Implies an effect block
--side-effect <LABEL>Side effect label. Repeatable. Implies an effect block
--bytes-moved <N>Bytes moved by the action. Implies an effect block
--resolution-deadline <TIMESTAMP>RFC 3339 deadline for an unresolved effect. Implies an effect block. Pair with --on-deadline
--on-deadline <EVENT>Obligation when --resolution-deadline passes: timeout | escalate | tombstone | inherit
--provider <NAME>Model provider (runtime identity), e.g. anthropic
--model <ID>Model identifier (runtime identity), e.g. claude-opus-4
--tool-schema-hash <sha256:HEX>Hash of the tool schemas available this turn (sha256:…)
--system-prompt-hash <sha256:HEX>Hash of the system prompt the agent ran under (sha256:…)
--input-digest <sha256:HEX>SHA-256 digest of the input consumed
--output-digest <sha256:HEX>SHA-256 digest of the output produced
--content-uri <URI>URI to referenced content (for large/external payloads). Sets the action's subject.uri so it can be matched against an approval's --allowed-subject scope. Same role as the older --content-uri flag, named to read symmetrically with the --allowed-subject flag on attest approval
--subject <URI>Subject the action targets, as a URI. Alias for --content-uri. Provided so callers reading treeship attest approval --allowed-subject env://prod can naturally type treeship attest action --subject env://prod
--parent <ID>Parent artifact ID -- links this into a chain
--approval-nonce <NONCE>Must match the nonce on the approval authorising this action
--idempotency-key <KEY>Idempotency key for retry-safe approval consumption
--meta <'{"key":"val"}'>Extra metadata as a JSON object
--out <PATH>Write the raw DSSE envelope to a file (- for stdout)

treeship attest approval

Record that an approver authorized an intent

treeship attest approval [OPTIONS] --approver <URI>
OptionDescription
--approver <URI>Approver URI
--subject <ID>Artifact ID being approved (subject reference for the ApprovalStatement itself; for scope constraints on what the downstream action may target, use --allowed-subject)
--description <TEXT>Human-readable description of what was approved
--expires <TIMESTAMP>Expiry as ISO 8601 timestamp
--allowed-actor <URI>Scope: actor URI(s) permitted to consume this approval. Repeatable. Empty list (and no other --allowed-* / --max-uses) means unscoped; verify will warn that the binding proves nothing about authorization
--allowed-action <LABEL>Scope: action label(s) permitted under this approval. Repeatable. Pre-existing flag --allowed-action remains the canonical name
--allowed-subject <URI>Scope: subject URI(s) permitted as the action's target. Repeatable. Matched against ActionStatement.subject.{uri | artifact_id | digest}
--max-uses <N>Scope: maximum number of actions this approval may authorise. Signed into the grant for future ledger enforcement; verify reports replay posture honestly and does NOT claim global single-use
--unscopedExplicit opt-in to an unscoped (bearer) approval. Required when no --allowed-* or --max-uses flag is set; without it the CLI refuses, since unscoped approvals are footguns
--irreversibility <CLASS>Irreversibility class of the actions this approval authorizes. one_way_consequential and one_way_terminal require a clean --quarantine-receipt; one_way_terminal additionally requires a human:// approver. Signed into the grant [possible values: two_way, one_way_recoverable, one_way_consequential, one_way_terminal]
--quarantine-receipt <ARTIFACT_ID>Artifact ID of a memory.quarantine-check.v1 receipt gating this grant. Must be locally stored, schema-valid, clean:true, and signed by a key pinned under agent_cert (the memory provider)

treeship attest handoff

Record a work handoff between actors

treeship attest handoff [OPTIONS] --from <URI> --to <URI> --artifacts <IDS>
OptionDescription
--from <URI>Source actor URI
--to <URI>Destination actor URI
--artifacts <IDS>Comma-separated artifact IDs being transferred
--approvals <IDS>Comma-separated approval IDs the receiver inherits
--obligations <TEXT>Comma-separated obligations the receiver must satisfy
--verified <FILE>Presentation file the receiver verified live. Records custody: live only if it verifies right now against this ship's trust roots
--challenge <NONCE>The nonce THIS ship minted that the presentation answers
--max-staple-age <DURATION>Freshness bound for the presentation's Merkle staple (30s, 15m, 2h, 1d); unknown age fails closed
--custody-reason <REASON>Record custody: asserted with this reason (e.g. same_computer)
--close-loop <SESSION_ID>Bind a sealed local session as close-loop evidence; its receipt digest is signed into the handoff

treeship attest receipt

Record an external system receipt (webhook, timestamp, confirmation)

treeship attest receipt [OPTIONS] --system <URI> --kind <KIND>
OptionDescription
--system <URI>System URI -- who produced this receipt
--kind <KIND>Receipt kind: confirmation | timestamp | inclusion | webhook
--subject <ID>Subject artifact ID
--payload <'{"key":"val"}'>Receipt payload as a JSON object
--payload-file <PATH>Read receipt payload JSON from a file
--payload-digest <DIGEST>Digest of the external payload, for example sha256:<hex>

treeship attest card

Mint a signed agent capability card (agent_card.v1)

treeship attest card [OPTIONS] --agent <URI>
OptionDescription
--agent <URI>Actor URI the card claims, e.g. agent://deployer
--tools <TOOLS>Capabilities: tool categories or family.* globs (comma-separated)
--models <MODELS>Models the agent uses (comma-separated)
--keyid <KEYID>Key this card binds to. Defaults to the signing key
--owner <URI>Owner URI, e.g. human://alice
--version <VERSION>Card version [default: 1.0.0]
--policy-ref <REF>Policy this card operates under
--from-harness <PATH>Capture the tool set from a harness config (e.g. a Claude Code settings.json). Its permissions.allow entries are stamped captured in capability_provenance -- read from real config, not declared
--tools-json <PATH>Declare the tool set from an explicit operator-supplied JSON file (a JSON array of tool strings, or &#123; "tools": [...] &#125;). The runtime companion to --from-harness: entries are stamped declared with the file as their source -- an operator's claim, honestly labeled, never presented as captured/discovered
--from-a2a <PATH>Map an A2A AgentCard JSON file's skills to capabilities, stamped discovered with the AgentCard's url as their source (the agent's own published descriptor). Protocol-level capabilities (streaming, ...) are excluded -- they are transport, not domain capabilities

treeship attest decision

Record an agent's reasoning and decision context

treeship attest decision [OPTIONS] --actor <URI>
OptionDescription
--actor <URI>Actor URI -- who made the decision
--model <MODEL>Model used for inference. Examples: claude-opus-4-7, kimi-k2, gpt-5, gemini-3-pro
--model-version <VERSION>Model version if known
--provider <NAME>Provider that hosts the model. Examples: anthropic, moonshot, openai, google, meta, mistral, ollama. Decoupled from --model so attribution is correct when the same model name lives behind multiple providers (e.g. Bedrock vs Anthropic native, OpenRouter vs OpenAI)
--tokens-in <N>Number of input tokens consumed
--tokens-out <N>Number of output tokens produced
--prompt-digest <sha256:HEX>SHA-256 digest of the full prompt
--summary <TEXT>Human-readable summary of the decision
--confidence <FLOAT>Confidence level 0.0-1.0
--parent <ID>Parent artifact ID -- links this into a chain

treeship attest endorsement

Record an endorsement of an existing artifact

treeship attest endorsement [OPTIONS] --endorser <URI> --subject <ID> --kind <KIND>
OptionDescription
--endorser <URI>Endorser URI -- who is endorsing
--subject <ID>Subject artifact ID being endorsed
--kind <KIND>Endorsement kind: validation, compliance, countersignature, review
--rationale <TEXT>Human-readable rationale for the endorsement
--expires <TIMESTAMP>Expiration timestamp (RFC 3339)
--policy-ref <URI>URI to the governing policy document
--meta <'{"key":"val"}'>Extra metadata as a JSON object
--parent <ID>Parent artifact ID -- links this into a chain
--out <PATH>Write the raw DSSE envelope to a file (- for stdout)

treeship room

Room sugar over treeship session -- create/status/participants for long-lived, multi-agent sessions

treeship room [OPTIONS] <COMMAND>

treeship room create

Create a room: sugar over session start that also populates SessionManifest.room (room_id, host_pubkey, invitation_authority, workflow_ref, checkpoint_every_actions)

treeship room create [OPTIONS]
OptionDescription
--workflow-ref <WORKFLOW_ID>Optional workflow this room's participants are bound to (Phase 3, not yet enforced -- see docs/specs/agent-invitations-rooms.md)
--invitation-authority <host-only|delegated|open>Who may mint invitations for this room. Defaults to host-only
--delegate <PUBKEY>Delegate pubkey(s), only valid with --invitation-authority delegated. May be repeated
--checkpoint-every <N>How often the room commits a Merkle checkpoint, expressed as a plain action count (e.g. --checkpoint-every 50). Not enforced yet -- carried on the manifest for the future checkpoint cadence feature

treeship room status

Show the active room's status (session status plus room fields). Errors if the active session is not a room

treeship room status [OPTIONS]

treeship room participants

List the room's finalized (two-signature) participants, in join order. Errors if the active session is not a room

treeship room participants [OPTIONS]

treeship session

Manage work sessions

treeship session [OPTIONS] <COMMAND>

treeship session start

Start a new work session

treeship session start [OPTIONS]
OptionDescription
--name <NAME>Human-readable name for this session
--actor <URI>Actor URI (default: ship://<your-ship-id>)
--workflow-ref <ARTIFACT_ID>Signed workflow.v1 artifact to bind into the session-start receipt
--allow-dangerous-rootAllow starting from a dangerous git root such as $HOME

treeship session status

Show active session info

treeship session status [OPTIONS]
OptionDescription
--watchWatch mode: poll the event log every 2 seconds and render a live TUI
--checkQuiet check: print nothing, exit 0 if a session is active, exit 1 otherwise. Designed for shell-script gating (hooks, monitors, CI)

treeship session close

Close the active session

treeship session close [OPTIONS]
OptionDescription
--summary <TEXT>Summary of what was accomplished
--headline <TEXT>One-line headline for the receipt (e.g. "Verifier refactor completed.")
--review <TEXT>What should be reviewed before trusting the output

treeship session abandon

Quarantine a wedged active session without deleting evidence

treeship session abandon [OPTIONS]

treeship session report

Upload a session receipt to the configured hub

treeship session report [OPTIONS] [SESSION_ID]
ArgumentDescription
[SESSION_ID]Session ID to report (defaults to the most recently closed session)
OptionDescription
--no-uploadSkip uploading to the hub. Compute digests + run local verification, return the agent-native shape with receipt_url / raw_json_url / paper_preview_url / package_download_url set to null. Useful when running in an environment without hub auth (CI, sandboxed agent, demo) but the caller still needs a structured share response

treeship session event

Append a structured event to the active session's event log

treeship session event [OPTIONS] --type <TYPE>
OptionDescription
--type <TYPE>Event type (e.g. agent.called_tool, agent.wrote_file, agent.read_file, agent.connected_network, agent.decision)
--tool <NAME>Tool name (for agent.called_tool events)
--file <PATH>File path (for agent.wrote_file / agent.read_file events)
--destination <HOST>Network destination (for agent.connected_network events)
--actor <URI>Actor URI (default: reads from session manifest)
--agent-name <NAME>Agent name for the event
--duration-ms <MS>Duration in milliseconds
--exit-code <CODE>Exit code or error indicator (0 = success)
--artifact-id <ID>Artifact ID to reference
--meta <JSON>Arbitrary JSON metadata
--model <NAME>Model identifier (for agent.decision events). Examples: claude-opus-4-7, gpt-5, kimi-k2, gemini-3-pro. Falls back to TREESHIP_MODEL env var when unset
--provider <NAME>Provider name (for agent.decision events). Examples: anthropic, openai, moonshot, google, meta, mistral. Falls back to TREESHIP_PROVIDER env var when unset
--tokens-in <N>Input tokens consumed by the inference (for agent.decision events). Falls back to TREESHIP_TOKENS_IN env var when unset
--tokens-out <N>Output tokens produced by the inference (for agent.decision events). Falls back to TREESHIP_TOKENS_OUT env var when unset

treeship session invite

Mint a single-use, expiring invitation for another agent to join this session (Phase 1 of the agent-invitations spec)

treeship session invite [OPTIONS] [SESSION_ID]
ArgumentDescription
[SESSION_ID]Session id to mint an invitation for. Defaults to the currently active session [default: ""]
OptionDescription
--invitee-cert <ISSUER:SUBJECTS>Cert-restricted invitation. Format: <issuer_pubkey>:<subject1,subject2,...>
--invitee-pubkey <FP_OR_PUBKEY>Pubkey-restricted invitation. Either a 16-hex fingerprint or a full canonical pubkey (ed25519:&lt;b64&gt; or bare base64url)
--openOpen invitation -- anyone holding the blob can redeem. Opt-in only; required because Open invitations are the loosest setting
--capabilities <TYPES>Comma-separated action types to grant. Defaults to "tool.call"
--expires <DURATION>Lifetime of the invitation (e.g. "30s", "5m", "1h", "7d"). Defaults to 1 hour; the protocol max is 7 days
--no-armorEmit raw JSON instead of the armored -----BEGIN TREESHIP INVITATION----- blob

treeship session join

Redeem an invitation and emit a pending participant event

treeship session join [OPTIONS] --actor <URI>
OptionDescription
--invite <BLOB>Paste the bootstrap blob inline (use - to read from stdin)
--invite-file <PATH>Read the bootstrap blob from a file
--actor <URI>Joining agent's actor URI (e.g. agent://researcher)

treeship session countersign

Host countersigns a pending participant event. After this runs, the participant envelope carries two signatures (joining agent + host) and verifies as a finalized join

treeship session countersign [OPTIONS] <PARTICIPANT_ID>
ArgumentDescription
<PARTICIPANT_ID>Participant artifact id (output of treeship session join)
OptionDescription
--challenge <NONCE>The nonce YOU (the host) issue for the room-join liveness challenge, right before finalizing. Any string; pick something unpredictable. Must be supplied together with --challenge-response
--challenge-issued-at <RFC3339>RFC 3339 instant you minted --challenge, as printed by treeship session mint-challenge
--challenge-response <PATH>Path to the joining agent's signed response to --challenge (output of treeship session answer-challenge). Use - for stdin

treeship session answer-challenge

Sign the host's room-join liveness nonce with the joining agent's own key. Run by the JOINING AGENT after session join, in response to a nonce the host chose out of band

treeship session answer-challenge [OPTIONS] --challenge <NONCE> --actor <URI> <PARTICIPANT_ID>
ArgumentDescription
<PARTICIPANT_ID>Participant artifact id (output of treeship session join)
OptionDescription
--challenge <NONCE>The nonce the host issued out of band for this join
--actor <URI>Joining agent's actor URI. Must resolve to the same key that ran treeship session join
--out <PATH>Output path (default: <participant_id>.challenge-response.json)

treeship session mint-challenge

Mint a 128-bit challenge nonce for a room-join liveness check

treeship session mint-challenge [OPTIONS]

treeship verify

Verify an artifact or its full parent chain

treeship verify [OPTIONS] <TARGET>
ArgumentDescription
<TARGET>What to verify: artifact ID, path to a .treeship/.agent package, or a receipt URL (http:// or https://). Use the global --quiet for exit-code-only output and --format json for machine-readable output
OptionDescription
--certificate <PATH-OR-URL>Cross-verify against an Agent Certificate (path to a .agent package or a URL serving the certificate JSON)
--no-chainVerify only this artifact, do not walk the parent chain. Only applies to the artifact-ID form
--max-depth <N>Maximum chain depth to walk (default: 20). Only applies to the artifact-ID form [default: 20]
--fullShow full chain timeline with box-drawn cards. Only applies to the artifact-ID form
--max-unwitnessed <DURATION>Fail unless every stretch of claimed work was externally witnessed within this long (e.g. 15m, 1h, 3600)
--require-authorityExit non-zero unless authority was actually checked and passed

treeship hub

Connect to treeship.dev Hub -- push, pull, and share artifacts

treeship hub [OPTIONS] <COMMAND>

treeship hub attach

Attach to Hub (creates new hub connection or reconnects to existing)

treeship hub attach [OPTIONS]
OptionDescription
--name <NAME>Name for this hub connection (default: "default")
--endpoint <URL>Hub API endpoint (default: https://api.treeship.dev)

treeship hub detach

Detach active hub connection (keeps keys for reconnect)

treeship hub detach [OPTIONS]

treeship hub ls

List all known hub connections

treeship hub ls [OPTIONS]

treeship hub status

Show active hub connection status

treeship hub status [OPTIONS]

treeship hub use

Switch active hub connection

treeship hub use [OPTIONS] <NAME_OR_ID>
ArgumentDescription
<NAME_OR_ID>Hub connection name or hub ID to switch to

treeship hub push

Push a signed artifact to Hub

treeship hub push [OPTIONS] <ID>
ArgumentDescription
<ID>Artifact ID to push (or "last" for most recent)
OptionDescription
--hub <NAME|ID>Push to a specific hub connection by name or ID
--allPush to all known hub connections

treeship hub pull

Pull an artifact from Hub into local storage

treeship hub pull [OPTIONS] <ID>
ArgumentDescription
<ID>Artifact ID to pull
OptionDescription
--hub <NAME|ID>Pull from a specific hub connection by name or ID

treeship hub open

Open workspace in browser

treeship hub open [OPTIONS]
OptionDescription
--hub <NAME|ID>Open workspace for a specific hub connection
--no-openPrint URL only, don't open browser

treeship hub kill

Remove a hub connection (revokes + deletes local keys)

treeship hub kill [OPTIONS] <NAME>
ArgumentDescription
<NAME>Hub connection name to remove
OptionDescription
--forceSkip confirmation prompt

treeship receipt

Export a receipt's offline-verifiable triple: message, signature, key

treeship receipt [OPTIONS] <COMMAND>

treeship receipt export

Export a receipt's offline-verifiable triple (message, signature, key)

treeship receipt export [OPTIONS] <ARTIFACT_ID>
ArgumentDescription
<ARTIFACT_ID>Artifact id of the receipt to export

treeship resolve

Resolve an agent URI to a verifiable bundle (identity, current card, revocation, provenance grades), re-derived from local artifacts

treeship resolve [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent URI to resolve, e.g. agent://deployer
OptionDescription
--hub <URL>Resolve from a Hub over the network instead of the local store. The returned bundle is re-verified client-side against your trust roots

treeship status

Show ship state: keys, recent artifacts, hub status

treeship status [OPTIONS]

treeship verify-capability

Verify an agent capability card against the agent's evidence

treeship verify-capability [OPTIONS] <CARD_ID>
ArgumentDescription
<CARD_ID>Artifact id of the agent_card.v1 receipt to check

treeship revoke-capability

Revoke a capability card (agent_card_revocation.v1)

treeship revoke-capability [OPTIONS] <CARD_ID>
ArgumentDescription
<CARD_ID>Artifact id of the agent_card.v1 receipt to revoke
OptionDescription
--reason <REASON>Optional reason, e.g. key-rotation, compromised, decommissioned

treeship publish

Publish an agent's resolvable set (current card + revocations) to the Hub, so it can be resolved over the network with resolve --hub

treeship publish [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent URI to publish, e.g. agent://deployer

treeship audit

Audit an agent's transparency log from a Hub: re-verify each anchored entry's inclusion offline and check completeness against its anchor

treeship audit [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent URI to audit, e.g. agent://deployer
OptionDescription
--hub <URL>Hub URL whose transparency log to audit
--watchMonitor mode: re-audit on an interval and keep alerting on omission
--interval <SECS>Seconds between re-audits in --watch mode [default: 30]

treeship keys

Manage signing keys

treeship keys [OPTIONS] <COMMAND>

treeship keys list

List all signing keys

treeship keys list [OPTIONS]

treeship keys export

Export a key's PUBLIC half in pinnable form, with the exact treeship trust add command a counterparty runs to pin it. The private key never leaves the store

treeship keys export [OPTIONS]
OptionDescription
--key <KEY>Specific key id to export. Defaults to the current default key
--agent <AGENT>Export the registered per-agent key for this actor URI (e.g. agent://deployer). Mutually exclusive with --key

treeship keys rotate

Rotate a signing key, minting a successor and stamping the predecessor with a grace-period valid_until

treeship keys rotate [OPTIONS]
OptionDescription
--key <KEY>Specific key id to rotate. Defaults to the current default key
--grace-hours <GRACE_HOURS>Hours the predecessor remains valid for verifiers honoring the grace window. Default 24h matches the typical client-cache TTL for fetched public-key bundles [default: 24]
--no-defaultMint the successor without promoting it to default. Useful for staging a rotation for review before the active signer flips

treeship trust

Manage pinned trust roots (issuer keys)

treeship trust [OPTIONS] <COMMAND>

treeship trust list

List every pinned trust root

treeship trust list [OPTIONS]

treeship trust add

Add or replace a trust root

treeship trust add [OPTIONS] --kind <KIND> <KEY_ID> <PUBLIC_KEY>
ArgumentDescription
<KEY_ID>Identifier for this root. Matches the existing key_id format but human-readable labels are accepted
<PUBLIC_KEY>Ed25519 public key. Either ed25519:&lt;base64url&gt; or bare base64url
OptionDescription
--kind <KIND>What this root is allowed to verify [possible values: hub_checkpoint, hub_org, cert_issuer, revoker, agent_cert, session_host, ship]
--label <LABEL>Optional human-readable label. Shown by treeship trust list
--yesSkip the interactive confirmation prompt. Required for non-interactive use (CI, scripts, JSON output mode)

treeship trust remove

Remove a trust root by key_id (across all kinds)

treeship trust remove [OPTIONS] <KEY_ID>
ArgumentDescription
<KEY_ID>Identifier to remove. Removes every entry with this key_id regardless of kind
OptionDescription
--yesSkip the interactive confirmation prompt. Required for non-interactive use (CI, scripts, JSON output mode)

treeship log

View receipt log

treeship log [OPTIONS]
OptionDescription
--followWatch for new receipts in real time
--tail <TAIL>Number of recent receipts to show [default: 20]

treeship workflow

Verify a workflow run against its signed declaration

treeship workflow [OPTIONS] <COMMAND>

treeship workflow verify

Verify one workflow run and print its conformance report

treeship workflow verify [OPTIONS] --workflow <ARTIFACT_ID> --first-run <ARTIFACT_ID> --run <FILE>
OptionDescription
--workflow <ARTIFACT_ID>Artifact id of the signed workflow.v1 declaration
--first-run <ARTIFACT_ID>Artifact id of the signed session.start that opened the run
--run <FILE>Path to the observation set for this run (JSON)
--proof <FILE>Optional checkpoint proof that the declaration pre-existed the run. Without it, pre-existence can never grade better than asserted
--strictExit non-zero when the report has any deviation, gap, or exceeded limit. Off by default: the substrate reports the file rather than assigning a score, so the pass/fail policy is the caller's

treeship package

Inspect and verify .treeship session packages

treeship package [OPTIONS] <COMMAND>

treeship package inspect

Inspect a .treeship session package

treeship package inspect [OPTIONS] <PATH>
ArgumentDescription
<PATH>Path to the .treeship package directory

treeship package verify

Verify a .treeship session package

treeship package verify [OPTIONS] <PATH>
ArgumentDescription
<PATH>Path to the .treeship package directory
OptionDescription
--strictPromote approval-evidence warnings (missing journal records, included-checkpoint anomalies) to verification failures. Existing receipt-determinism / event-log warnings are unchanged

treeship onboard

Onboard an agent end to end in one command: register it with its own key, mint its capability card, optionally publish + anchor to the attached Hub, and print the trust bundle a counterparty runs to verify it. Idempotent -- safe to run on every agent boot

treeship onboard [OPTIONS] <NAME>
ArgumentDescription
<NAME>Agent name or agent:// URI (normalized either way)
OptionDescription
--from-harness <PATH>Harness config (e.g. a Claude Code settings.json) whose permissions.allow list is captured as the capability set
--tools-json <PATH>Operator-declared capability list (JSON array or { "tools": [...] })
--from-a2a <PATH>A2A AgentCard JSON whose skills become discovered capabilities
--tools <TOOLS>Capabilities: tool categories or family.* globs (comma-separated)
--models <MODELS>Models the agent uses (comma-separated)
--description <TEXT>Agent description
--publishAlso publish the agent + checkpoint + anchor to the attached Hub

treeship present

Package an agent's proof into a file it can hand to any counterparty: current card + certificate chain + known revocations + a Merkle staple (checkpoint + inclusion proof). The counterparty verifies it fully offline with verify-presentation — no registry in the loop

treeship present [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent name or agent:// URI
OptionDescription
--out <PATH>Output path (default: <name>.presentation.json)
--challenge <NONCE>Sign the verifier's nonce with the agent's own key (the handshake: proves live key control, not just the record). Requires --own-key
--disclose <CAPS>Reveal only these capabilities, hiding the rest (selective disclosure). Comma-separated tool names that must appear in the agent's card. The presentation carries a re-signed, digests-only card plus openings for only the named capabilities; the others stay opaque. A disclosed presentation is not transparency-anchored (an ephemeral, privacy- preserving re-sign), so it omits the Merkle staple

treeship verify-presentation

Verify a presentation file fully offline against YOUR trust roots: leaf pin or certificate-chain walk to a pinned ship root, authorized revocations honored, staple checkpoint + inclusion re-verified, and freshness reported as an explicit bound

treeship verify-presentation [OPTIONS] <PATH>
ArgumentDescription
<PATH>Path to a .presentation.json file
OptionDescription
--max-staple-age <DURATION>Reject staples older than this (30s, 15m, 2h, 1d). Unset = report the age without enforcing
--challenge <NONCE>The nonce YOU issued for this handshake. The presentation's challenge response must answer exactly this nonce, signed by the card's key

treeship history

An agent's work history: its transparency log filtered to signed session.v1 records, sortable and filterable. Each record's envelope is re-verified on this machine; anchored entries' Merkle inclusion is re-proved offline. History proves what was recorded, never everything that happened

treeship history [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent name or agent:// URI
OptionDescription
--hub <URL>Pull history from a Hub instead of the local store
--class <CLASS>Only records with this attestation class (self | runtime | countersigned)
--since <TIMESTAMP>Only records closed at or after this RFC 3339 timestamp
--limit <N>Maximum records to show (newest first) [default: 50]

treeship profile

A derived, checkpoint-pinned track record over an agent's work history. Every number recomputes from the log at the pinned checkpoint: match grades the profile checked; mismatch is a provable lie. --attest signs it as a ship claim

treeship profile [OPTIONS] <AGENT>
ArgumentDescription
<AGENT>Agent name or agent:// URI
OptionDescription
--attestSign the computed profile as a profile.v1 receipt (ship claim)

treeship verify-profile

Recompute an attested profile.v1 from the log at its pinned checkpoint and compare, field by field. checked or MISMATCH

treeship verify-profile [OPTIONS] <ID>
ArgumentDescription
<ID>profile.v1 artifact id

treeship match

Find agents by their EXERCISED evidence: which agents actually ran tools matching a glob, ranked by verified session count. The hub proposes candidates from its index; every record is re-verified on this machine against your trust roots

treeship match [OPTIONS] --hub <URL> --exercised <GLOB>
OptionDescription
--hub <URL>Hub to query
--exercised <GLOB>Tool glob the agent must have exercised (e.g. "payments.*")
--class <CLASS>Only sessions with this attestation class (self | runtime | countersigned)
--min-sessions <N>Minimum matching sessions a candidate must have [default: 1]

treeship setup

Guided first-run setup -- detect agents, draft cards, instrument, smoke verify

treeship setup [OPTIONS]
OptionDescription
--yesSkip the confirmation prompt before instrumenting
--skip-smokeSkip the smoke verification pass after instrumentation
--no-instrumentDetect + draft cards only -- do not modify any agent config files

treeship pending

List pending approvals

treeship pending [OPTIONS]

treeship approve

Approve a pending action

treeship approve [OPTIONS] [N]
ArgumentDescription
[N]Index of the pending approval to approve (default: 1)

treeship deny

Deny a pending action

treeship deny [OPTIONS] [N]
ArgumentDescription
[N]Index of the pending approval to deny (default: 1)

treeship grant

Mint and inspect signed capability grants

treeship grant [OPTIONS] <COMMAND>

treeship grant issue

Mint a signed grant. With --parent, mints a delegated child

treeship grant issue [OPTIONS] --scope <SCOPE> --audience <AUDIENCE> --expiry <EXPIRY>
OptionDescription
--scope <SCOPE>Capability this grant admits. Repeatable. A single trailing * acts as a prefix wildcard: payments.*
--audience <AUDIENCE>Who the grant is for. A delegated grant may not change it
--expiry <EXPIRY>RFC 3339. A delegated grant may not outlive its parent
--parent <PARENT>Delegate from this grant id, narrowing its authority
--max-delegation <MAX_DELEGATION>How many further delegations this grant permits beneath it [default: 3]
--objective-hash <OBJECTIVE_HASH>Optional hash binding the grant to a stated objective
--grantee <GRANTEE>Public key (base64url, no padding) entitled to exercise this grant. Without it the grant is a bearer token: anyone holding the file can spend it
--grantee-selfBind the grant to this workspace's own key. The safe default for a self-grant, without pasting your own public key

treeship grant list

List every grant minted in this workspace

treeship grant list [OPTIONS]

treeship grant show

Show one grant, re-deriving its id and re-checking its signature

treeship grant show [OPTIONS] <GRANT_ID>
ArgumentDescription
<GRANT_ID>--
OptionDescription
--check-logVerify the log holding this grant's revocation, against the hub

treeship grant revoke

Withdraw a grant. Mints a signed grant_revocation.v1 receipt

treeship grant revoke [OPTIONS] <GRANT_ID>
ArgumentDescription
<GRANT_ID>--
OptionDescription
--reason <REASON>Why, e.g. compromised, task-complete, scope-error, key-rotation

treeship doctor

Diagnostic check -- verify everything is working

treeship doctor [OPTIONS]
OptionDescription
--fixRepair insecure permissions on the keystore directory and files

treeship version

Print version and build info

treeship version [OPTIONS]

On this page

treeship quickstarttreeship inittreeship addtreeship wraptreeship attesttreeship attest actiontreeship attest approvaltreeship attest handofftreeship attest receipttreeship attest cardtreeship attest decisiontreeship attest endorsementtreeship roomtreeship room createtreeship room statustreeship room participantstreeship sessiontreeship session starttreeship session statustreeship session closetreeship session abandontreeship session reporttreeship session eventtreeship session invitetreeship session jointreeship session countersigntreeship session answer-challengetreeship session mint-challengetreeship verifytreeship hubtreeship hub attachtreeship hub detachtreeship hub lstreeship hub statustreeship hub usetreeship hub pushtreeship hub pulltreeship hub opentreeship hub killtreeship receipttreeship receipt exporttreeship resolvetreeship statustreeship verify-capabilitytreeship revoke-capabilitytreeship publishtreeship audittreeship keystreeship keys listtreeship keys exporttreeship keys rotatetreeship trusttreeship trust listtreeship trust addtreeship trust removetreeship logtreeship workflowtreeship workflow verifytreeship packagetreeship package inspecttreeship package verifytreeship onboardtreeship presenttreeship verify-presentationtreeship historytreeship profiletreeship verify-profiletreeship matchtreeship setuptreeship pendingtreeship approvetreeship denytreeship granttreeship grant issuetreeship grant listtreeship grant showtreeship grant revoketreeship doctortreeship version