Files
openclaw/docs/cli/commitments.md
Peter Steinberger d0b362f255 fix(commitments): make dismissal atomic and truthful (#117591)
* fix(commitments): report atomic dismissals truthfully

* docs(commitments): explain dismissal JSON results

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 13:54:51 -07:00

3.0 KiB

summary, read_when, title
summary read_when title
CLI reference for `openclaw commitments` (inspect and dismiss inferred follow-ups)
You want to inspect inferred follow-up commitments
You want to dismiss pending check-ins
You are auditing what heartbeat may deliver
`openclaw commitments`

Inspect and dismiss records left by the retired inferred commitments experiment. OpenClaw no longer creates or delivers new commitments, but keeps the maintenance command so upgrades can audit and clean up existing SQLite rows.

With no subcommand, openclaw commitments lists pending commitments.

Usage

openclaw commitments [--all] [--agent <id>] [--status <status>] [--json]
openclaw commitments list [--all] [--agent <id>] [--status <status>] [--json]
openclaw commitments dismiss <id...> [--json]

Options

  • --all: show all statuses instead of only pending commitments.
  • --agent <id>: filter to one agent id.
  • --status <status>: filter by status. Values: pending, sent, dismissed, snoozed, or expired. Unknown values exit with an error. The snoozed status is reserved: no built-in flow currently snoozes a commitment; snoozed records can appear only when imported from legacy state.
  • --json: output machine-readable JSON.

dismiss marks the given commitment ids as dismissed.

Examples

List pending commitments:

openclaw commitments

List every stored commitment:

openclaw commitments --all

Filter to one agent:

openclaw commitments --agent main

Filter by status:

openclaw commitments --status dismissed

Dismiss one or more commitments:

openclaw commitments dismiss cm_abc123 cm_def456

Export as JSON:

openclaw commitments --all --json

Output

Text output prints the commitment count, the shared SQLite database path, any active filters, and one row per commitment:

  • commitment id
  • status
  • kind (event_check_in, deadline_check, care_check_in, or open_loop)
  • earliest due time
  • scope (agent/channel/target)
  • suggested check-in text

JSON output includes the count, the active status and agent filters, the shared SQLite database path, and the full stored records.

Dismissal output

dismiss changes only active pending or snoozed commitments. Missing, already dismissed, sent, and expired commitments remain unchanged. Duplicate IDs are ignored after their first occurrence, and results preserve request order.

When every requested commitment is dismissed, --json returns:

{ "dismissed": ["cm_abc123", "cm_def456"] }

When a request includes stale or inactive IDs, the command reports both results and exits with status 1:

{ "dismissed": ["cm_abc123"], "notDismissed": ["cm_missing", "cm_expired"] }

If no requested commitment can be dismissed, the command still exits with status 1:

{ "dismissed": [], "notDismissed": ["cm_missing"] }