All commands · lifecycle
pm close many
Bulk-close matched items with a shared reason and full runClose semantics (dry-run + rollback checkpoint).
Bulk-closes matched items with a shared reason routed through full pm close semantics (close validation, active-child orphan checks, blocked-edge cleanup) plus dry-run previews and rollback checkpoints — unlike update-many --status closed, which bypasses close validation.
Usage
pm close many [options]Options
| --filter-status <value> | Filter by status before closing | optional |
|---|---|---|
| --filter-type <value> | Filter by item type before closing | optional |
| --filter-tag <value> | Filter by tag before closing | optional |
| --filter-priority <value> | Filter by priority before closing | optional |
| --filter-deadline-before <value> | Filter by deadline upper bound before closing | optional |
| --filter-deadline-after <value> | Filter by deadline lower bound before closing | optional |
| --filter-updated-after <value> | Filter by updated_at lower bound before closing (ISO/relative) | optional |
| --filter-updated-before <value> | Filter by updated_at upper bound before closing (ISO/relative) | optional |
| --filter-created-after <value> | Filter by created_at lower bound before closing (ISO/relative) | optional |
| --filter-created-before <value> | Filter by created_at upper bound before closing (ISO/relative) | optional |
| --filter-assignee <value> | Filter by assignee before closing | optional |
| --filter-assignee-filter <value> | Filter assignee presence: assigned|unassigned before closing | optional |
| --filter-parent <value> | Filter by parent item ID before closing | optional |
| --filter-sprint <value> | Filter by sprint before closing | optional |
| --filter-release <value> | Filter by release before closing | optional |
| --filter-has-notes | Select only items that have notes before closing | optional |
| --filter-no-notes | Select only items that have no notes before closing | optional |
| --filter-has-learnings | Select only items that have learnings before closing | optional |
| --filter-no-learnings | Select only items that have no learnings before closing | optional |
| --filter-has-files | Select only items that have linked files before closing | optional |
| --filter-no-files | Select only items that have no linked files before closing | optional |
| --filter-has-docs | Select only items that have linked docs before closing | optional |
| --filter-no-docs | Select only items that have no linked docs before closing | optional |
| --filter-has-tests | Select only items that have linked tests before closing | optional |
| --filter-no-tests | Select only items that have no linked tests before closing | optional |
| --filter-has-comments | Select only items that have comments before closing | optional |
| --filter-no-comments | Select only items that have no comments before closing | optional |
| --filter-has-deps | Select only items that have dependencies before closing | optional |
| --filter-no-deps | Select only items that have no dependencies before closing | optional |
| --filter-has-body | Select only items that have a non-empty body before closing | optional |
| --filter-empty-body | Select only items with an empty body before closing | optional |
| --filter-has-linked-command | Select only items whose linked tests carry a runnable command before closing | optional |
| --filter-no-linked-command | Select only items whose linked tests carry no runnable command before closing | optional |
| --filter-reviewer-missing | Select only items missing reviewer before closing | optional |
| --filter-risk-missing | Select only items missing risk before closing | optional |
| --filter-confidence-missing | Select only items missing confidence before closing | optional |
| --filter-sprint-missing | Select only items missing sprint before closing | optional |
| --filter-release-missing | Select only items missing release before closing | optional |
| --ids <value> | Explicit ID allowlist: comma/newline text, - stdin, or @path file | optional |
| --limit <n> | Limit matched item count before apply/preview | optional |
| --offset <n> | Skip first n matched rows before apply/preview | optional |
| --reason <value> | Shared close reason applied to matched items (required when governance.require_close_reason is enabled) | optional |
| --completed-at <value> | Actual completion timestamp (ISO or relative) applied to every matched item | optional |
| --resolution <value> | Shared closure resolution applied to every matched item (closure-validation field) | optional |
| --expected-result <value> | Shared expected-result note (closure-validation field) | optional |
| --expected <value> | Short alias for --expected-result | optional |
| --actual-result <value> | Shared actual-result note (closure-validation field) | optional |
| --actual <value> | Short alias for --actual-result | optional |
| --validate-close [mode] | Validate closure metadata per item: "off", "warn", or "strict" (default: settings governance preset) | optional |
| --author <value> | Mutation author | optional |
| --message <value> | History message | optional |
| --force | Re-close already-terminal matches and override ownership | optional |
| --dry-run | Preview matched items + per-item skip/active-child plan without mutating | optional |
| --rollback <value> | Rollback a prior close-many checkpoint ID | optional |
| --no-checkpoint | Disable checkpoint creation during apply mode | optional |
Examples
pm close many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met" --dry-run