# Clients and client reports

> Clients, what they owe you, dated updates, report editions and private portal links.

Source: https://docs.crossbot.io/pmo/cli/reference/clients
Product: pmo · Kind: reference · Status: live · Last verified: 2026-10-21

{/* Generated by scripts/gen-pmo-cli-reference.mjs from `pmo help`. Do not edit by hand. */}
Clients, what they owe you, dated updates, report editions and private portal links. On your own computer, `pmo help <command>` prints the same text, for example `pmo help client list`.

## `pmo client list`

Every client: engagements, projects, modules, open activities, worst health.

```sh
pmo client list [<word>] [--q <text>] [--all] [--json]
```

**Example**

```sh
pmo client list --json

`pmo help filters` prints these filters in full, and the bare-word search.
```

## `pmo client show`

One client: its contacts, every engagement with its counts, and the totals.

```sh
pmo client show <id> [--all] [--json]
```

**Example**

```sh
pmo client show cross-systems
```

## `pmo client create`

Register a client — who an engagement is for.

```sh
pmo client create <id> --name "<name>" --kind internal|external|pursuit [--industry "<what they do>"] [--primary-contact "<who>"] [--notes "<anything else>"] --as person:<id>
```

## `pmo client set`

Correct a client's name, kind, industry, contact or notes.

```sh
pmo client set <id> <field=value>... --as person:<id>
```

## `pmo client contact add`

Record one of a client's people — who its reports are addressed to.

```sh
pmo client contact add <client> --name "<name>" --role "<role>" [--email <addr>] [--github <handle>] --as person:<id>
```

**Example**

```sh
pmo client contact add cross-energy --name "you Farias" --role "Chairman and chief executive" \
  --github you --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo client contact remove`

Take one of a client's people off its contacts.

```sh
pmo client contact remove <client> --name "<name>" --as person:<id>
```

**Example**

```sh
pmo client contact remove cross-energy --name "you Farias" --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo client partner add`

Record somebody working on a client's behalf.

```sh
pmo client partner add <client> --name "<name>" --role "<role>" [--email <addr>] [--github <handle>] --as person:<id>
```

**Example**

```sh
pmo client partner add cross-systems --name "FanHero" --role "Network partner on Reef" --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo client partner remove`

Take somebody off a client's partners.

```sh
pmo client partner remove <client> --name "<name>" --as person:<id>
```

**Example**

```sh
pmo client partner remove cross-systems --name "FanHero" --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request remove`

Take a request recorded by mistake off the record; close one the client answered.

```sh
pmo request remove <id> --eng <slug>
```

**Example**

```sh
pmo request remove pend-024 --eng example-client --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request followup remove`

Take one follow-up date off a request.

```sh
pmo request followup remove <id> --date <YYYY-MM-DD> --eng <slug>
```

**Example**

```sh
pmo request followup remove pend-007 --eng example-client --date 2026-09-29 --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request followup set`

Correct a follow-up: the day it was sent, or what it chased.

```sh
pmo request followup set <id> --date <YYYY-MM-DD> [--on <YYYY-MM-DD>] [--note "<what was chased>"] --eng <slug>
```

**Example**

```sh
pmo request followup set pend-007 --eng example-client --date 2026-09-29 --on 2026-09-30 --note "Asked for the written sign-off." --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request list`

What the engagement is waiting on the client for — open requests, or --all.

```sh
pmo request list --eng <slug> [--module <id>] [--all] [--json]
```

**Example**

```sh
pmo request list --eng example-client --module parser

`pmo help filters` prints these filters in full, and the bare-word search.
```

## `pmo request add`

Record something asked of the client.

```sh
pmo request add --eng <slug> --ask "<what was asked>" [--module <id>] [--requested <date>] [--to "<who>"] [--blocker]
```

**Example**

```sh
pmo request add --eng example-client --module appraisal-import-module \
  --ask "A sample Lido export to build and test against." --requested 2026-09-28 --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request set`

Correct a request: its words, its date, who it went to, its module, its number, how and by which update it was resolved, or reopen it.

```sh
pmo request set <id> ask=… | requested=<date> | to=… | module=<id> | ref=… | resolution=… | resolved_by=<upd-id> | closed= --eng <slug>
```

**Example**

```sh
pmo request set pend-009 --eng example-client resolution="the client confirmed the dataset on a call." --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request followup`

Record that the client was chased again.

```sh
pmo request followup <id> --eng <slug> [--date <date>]
```

**Example**

```sh
pmo request followup pend-007 --eng example-client --date 2026-09-29 --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo request close`

Close a request — the client answered, or it no longer applies — and say how.

```sh
pmo request close <id> --eng <slug> [--date <date>] [--note "<how it was resolved>"] [--by <upd-id>]
```

**Example**

```sh
pmo request close pend-001 --eng example-client --date 2026-10-01 --note "example granted access to the sandbox." --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo portal link create`

Make a private link a client opens without an account — or reuse the scope's live one.

```sh
pmo portal link create (--client <id> | <slug> [--project <id> | --module <id>]) --label "<for whom>" [--expires <YYYY-MM-DD>] [--reports tracker,scope] [--new] [--note "<why>"] --as person:<id>
```

**Example**

```sh
pmo portal link create --client example --label "Jane Smith" --as person:you
pmo portal link create --client example --label "John Doe" --new --as person:you
pmo portal link create example-client --module data-lakehouse-sandbox --label "Jane Smith" --as person:you
# one link per person, labelled with their name: each revokes on its own and every open is logged against it
# a second create for the same scope returns the same link unless --new

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo portal link list`

An engagement's or a client's links, with when each was last opened.

```sh
pmo portal link list (<slug> | --client <id>) [--all] [--json]
```

**Example**

```sh
pmo portal link list example-client
pmo portal link list --client example --all

`pmo help filters` prints these filters in full, and the bare-word search.
```

## `pmo portal link show`

One link, its history and its last opens.

```sh
pmo portal link show <link-id> [--hits <n>] [--json]
```

**Example**

```sh
pmo portal link show pl-3k9x2m7q --hits 50
```

## `pmo portal link copy`

Print a link's URL again — logged.

```sh
pmo portal link copy <link-id> [--note "<why>"] --as person:<id>
```

**Example**

```sh
pmo portal link copy pl-3k9x2m7q --as person:you   # the same URL, again

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo portal link set`

Change a link's label, expiry or reports.

```sh
pmo portal link set <link-id> label="<for whom>" | expires=<YYYY-MM-DD>|none | reports=tracker,scope [--note "<why>"] --as person:<id>
```

**Example**

```sh
pmo portal link set pl-3k9x2m7q expires=2027-03-31 --as person:you
pmo portal link set pl-3k9x2m7q reports=tracker --as person:you   # scope analysis off: an Owner's

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo portal link revoke`

Stop a link working on its next request — with --children, every link below it too.

```sh
pmo portal link revoke <link-id> [--children] [--note "<why>"] --as person:<id>
```

**Example**

```sh
pmo portal link revoke pl-3k9x2m7q --children --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo portal hits`

The portal log, newest first: which link opened which page, and when.

```sh
pmo portal hits (<slug> | --client <id>) [--link <link-id>] [--since <YYYY-MM-DD>] [--limit <n>] [--json]
```

**Example**

```sh
pmo portal hits --client example --since 2026-10-01
```

## `pmo portal people add`

Let a client person open a link — they sign in with their email and a code.

```sh
pmo portal people add <link-id> --name "<their name>" --email <address> [--note "<why>"] --as person:<id>
```

## `pmo portal people remove`

Take a client person off a link; off their last link, they are removed and signed out.

```sh
pmo portal people remove <link-id> <person-id> [--note "<why>"] --as person:<id>
```

## `pmo portal people list`

The client people who may open a link, and when each last signed in.

```sh
pmo portal people list <link-id> [--json]
```

## `pmo cycle list`

The editions of an engagement's client report, newest first.

```sh
pmo cycle list --eng <slug> [--json]
```

**Example**

```sh
pmo cycle list --eng example-client

`pmo help filters` prints these filters in full, and the bare-word search.
```

## `pmo cycle add`

Record the date a client report is as of, who it is for and how it is marked.

```sh
pmo cycle add --eng <slug> --as-of <date> [--audience customer|internal] [--classification "<label>"]
```

**Example**

```sh
pmo cycle add --eng example-client --as-of 2026-09-28 --classification "Confidential" --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo cycle set`

Correct an edition: its date, who it is for, or how it is marked.

```sh
pmo cycle set <id> as_of=<date> | audience=customer|internal | classification=… --eng <slug>
```

**Example**

```sh
pmo cycle set 2026-09-28 --eng example-client audience=internal --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo cycle remove`

Take away an edition entered by mistake.

```sh
pmo cycle remove <id> --eng <slug> [--note "<why>"]
```

**Example**

```sh
pmo cycle remove 2026-09-21 --eng example-client --note "entered twice" --as agent:rag

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo update add`

Record what happened on a project — when, who said it, which modules it touches, and what it changes.

```sh
pmo update add --eng <slug> [--project <id>] [--module <id>…] --on <date> [--at HH:MM] --from client|team --kind milestone|decision|progress|risk|note --text "…" --shown-to client|team [--person "…"] [--source call|email|meeting|document|message|chat|text] [--source-ref "…"] [--closes <request>…] [--stage <stage>] [--where "…"] [--concerns "…"] [--left "…"] [--next "…" --next-owner client|team] [--progress <0-100>]
```

**Example**

```sh
pmo update add --eng example-client --project data-lakehouse --module data-lakehouse-sandbox \
  --module data-quality-deterministic --on 2026-10-01 --from client --person "the client" \
  --source call --kind milestone --shown-to client --closes pend-009 --closes pend-012 --stage 14 \
  --text "the client confirmed on the call that the sandbox data and the rules are right." --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo update list`

The updates on an engagement, a project or a module, newest first.

```sh
pmo update list --eng <slug> [--project <id>] [--module <id>]… [--all] [--json]
```

**Example**

```sh
pmo update list --eng example-client --module data-lakehouse-sandbox

`pmo help filters` prints these filters in full, and the bare-word search.
```

## `pmo update show`

One update in full, its changes numbered as --drop counts them.

```sh
pmo update show <upd> --eng <slug> [--json]
```

**Example**

```sh
pmo update show upd-001 --eng example-client
```

## `pmo update set`

Correct an update: its words, its day and time, who it came from, how it was heard, its kind, or who may read it.

```sh
pmo update set <upd> text=… | on=<date> | at=HH:MM | from=client|team | person=… | source=… | source_ref=… | kind=… | shown_to=client|team --eng <slug>
```

**Example**

```sh
pmo update set upd-001 --eng example-client text="the client confirmed the sandbox data on the call." at=11:00 --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo update confirm`

Confirm a proposed update and apply its changes.

```sh
pmo update confirm <upd> --eng <slug> [--drop <n>…] --as person:<id>
```

**Example**

```sh
pmo update confirm upd-001 --eng example-client --drop 2 --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```

## `pmo update withdraw`

Take an update out of the client's view, keeping it on the record.

```sh
pmo update withdraw <upd> --eng <slug> --reason "…"
```

**Example**

```sh
pmo update withdraw upd-001 --eng example-client --reason "Recorded on the wrong module." --as person:you

A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.
```
