projmux 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/cli.md CHANGED
@@ -39,7 +39,7 @@ Root parser bridges outside the route graph are censused from their parser token
39
39
 
40
40
  Every route declares one allowed-effect record over seven independent resource axes. A pipe separates conditional success outcomes; preflight refusal remains zero-effect. `domain-effect=null` means the route has no typed extension beyond this resource tuple.
41
41
 
42
- The machine-readable manifest contains 194 route-effect records, including hidden plumbing that the public route sections omit.
42
+ The machine-readable manifest contains 239 route-effect records, including hidden plumbing that the public route sections omit.
43
43
 
44
44
  | Axis | Closed vocabulary |
45
45
  | --- | --- |
@@ -63,7 +63,7 @@ projmux <command> [args...]
63
63
  | [`projmux agent`](#projmux-agent) | canonical | Manage Agent state, messages, waits, capabilities, integrations, and account usage |
64
64
  | [`projmux attention`](#projmux-attention) | canonical | View and manage live tmux pane attention state |
65
65
  | [`projmux attach`](#projmux-attach) | canonical | Enter a Project runtime from outside tmux |
66
- | [`projmux config`](#projmux-config) | canonical | Edit AI split-mode and enabled-provider settings; render or apply generated tmux configuration |
66
+ | [`projmux config`](#projmux-config) | canonical | Edit AI split-mode, enabled-provider, locale, and agent-question settings; render or apply generated tmux configuration |
67
67
  | [`projmux create`](#projmux-create) | canonical | Create Projmux resources |
68
68
  | [`projmux delete`](#projmux-delete) | canonical | Delete Projmux resources with an explicit cascade plan |
69
69
  | [`projmux describe`](#projmux-describe) | canonical | Describe one Projmux resource |
@@ -75,7 +75,8 @@ projmux <command> [args...]
75
75
  | [`projmux label`](#projmux-label) | canonical | Set or remove Projmux resource metadata.labels after creation |
76
76
  | [`projmux notification`](#projmux-notification) | canonical | Manage pending notification workflow state |
77
77
  | [`projmux open`](#projmux-open) | canonical | Open a Project runtime and move the current client to it |
78
- | [`projmux persona`](#projmux-persona) | canonical | List, show, edit, set, and delete Agent persona files |
78
+ | [`projmux instructions`](#projmux-instructions) | canonical | List, show, edit, set, and delete Agent instruction files |
79
+ | [`projmux profile`](#projmux-profile) | canonical | List, show, set, and delete named Agent profiles |
79
80
  | [`projmux pin`](#projmux-pin) | canonical | Manage pinned project directories |
80
81
  | [`projmux prune`](#projmux-prune) | canonical | Prune stale Projects and Agents |
81
82
  | [`projmux quit`](#projmux-quit) | shortcut | Quit the app-owned projmux tmux runtime |
@@ -118,24 +119,30 @@ Allowed effects:
118
119
  projmux agent status [get [<agent-ref>] | set <unknown|idle|in_progress|approval_required|input_required|response_complete> [<agent-ref>]] [--agent <ref>]
119
120
  projmux agent topic get|clear [<agent-ref>] [--agent <ref>]
120
121
  projmux agent topic set <text> [<agent-ref>] [--agent <ref>]
121
- projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
122
- projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
123
- projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
122
+ projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--model <model>] [--effort <level>] [--dialogue-reply-only]
123
+ projmux agent relaunch <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--profile <name>|none] [--instructions <name>|none] [--model <model>] [--effort <level>] [--reset <item>[,...]|all] [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
124
124
  projmux agent turn start|steer <agent-ref> -- <text>
125
- projmux agent turn interrupt <agent-ref>
125
+ projmux agent turn interrupt <agent-ref> [--via <client>]
126
126
  projmux agent approval review <agent-ref> [--request <normalized-id>]
127
+ projmux agent approval list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
128
+ projmux agent approval answer <agent-ref> <request-id> (--allow | --deny) [--via <popup|cli|client>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
127
129
  projmux agent review [<agent-ref>] [--agent <ref>] [--base <branch> | --commit <sha> | --instructions <text>]
128
130
  projmux agent integrate <codex|claude|antigravity|tmux-bell> [--remove] [--dry-run]
129
131
  projmux agent usage [--model <codex|claude|all>] [--window <name>] [--json] [--force]
130
- projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json]
132
+ projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json] [--json]
133
+ projmux agent models [--provider <claude|codex>] [-o json]
131
134
  projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
132
135
  projmux agent message status <message-ref> [-o json]
133
- projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
136
+ projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json [--timeout <duration>]
134
137
  projmux agent wait <agent-ref> [--until idle] [--timeout <duration>] [-o json]
135
- projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
136
- projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
137
- projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
138
- projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
138
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
139
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
140
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
141
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
142
+ projmux agent sessions list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
143
+ projmux agent sessions backfill [--dry-run] [-o json]
144
+ projmux agent sessions project <project-ref> [-o json]
145
+ projmux agent sessions attribute [--dry-run] [-o json]
139
146
  ```
140
147
 
141
148
  Subcommands:
@@ -145,18 +152,20 @@ Subcommands:
145
152
  | [`projmux agent status`](#projmux-agent-status) | Read or set semantic Agent interaction independently of lifecycle |
146
153
  | [`projmux agent topic`](#projmux-agent-topic) | Read, set, or clear one exact Agent topic annotation |
147
154
  | [`projmux agent resume`](#projmux-agent-resume) | Rebind an Offline or Failed Agent detached on its Window's exact shell or Agent anchor |
148
- | [`projmux agent persona`](#projmux-agent-persona) | Attach or detach a persona on one exact Claude Agent and resume it on the same conversation |
149
- | [`projmux agent turn`](#projmux-agent-turn) | Send, steer, or interrupt one exact native Codex turn |
150
- | [`projmux agent approval`](#projmux-agent-approval) | Review one exact pending native Codex approval |
155
+ | [`projmux agent relaunch`](#projmux-agent-relaunch) | Restart one exact Claude or Codex Agent on the same conversation with another profile, instructions, model, or effort |
156
+ | [`projmux agent turn`](#projmux-agent-turn) | Send or steer one exact native Codex turn, or interrupt an exact Codex or Claude turn |
157
+ | [`projmux agent approval`](#projmux-agent-approval) | Review one exact pending native Codex approval, or list and answer Claude and Codex permission requests |
151
158
  | [`projmux agent review`](#projmux-agent-review) | Start a native review on an exact-bound Codex Agent |
152
159
  | [`projmux agent integrate`](#projmux-agent-integrate) | Install, remove, or preview provider hooks and tmux-bell integration |
153
160
  | [`projmux agent usage`](#projmux-agent-usage) | Read provider account usage quota snapshots |
154
161
  | [`projmux agent capabilities`](#projmux-agent-capabilities) | Read static provider support or one exact Agent's Registry-backed runtime eligibility |
162
+ | [`projmux agent models`](#projmux-agent-models) | List model suggestions for Claude (default) or Codex (app-server); other names are still accepted |
155
163
  | [`projmux agent message`](#projmux-agent-message) | Exchange bounded untrusted coordination messages; --source selects a source Agent anchor, not caller authentication (default: active Pane) |
156
164
  | [`projmux agent wait`](#projmux-agent-wait) | Wait read-only for one exact Agent's Registry-backed idle observation |
157
- | [`projmux agent question`](#projmux-agent-question) | Answer one exact opted-in Claude Agent's AskUserQuestion prompts from the command line |
165
+ | [`projmux agent question`](#projmux-agent-question) | Answer one exact opted-in Claude or Codex Agent's questions from the command line |
166
+ | [`projmux agent sessions`](#projmux-agent-sessions) | List the Claude or Codex conversations an Agent or a Project has moved through, backfill past Claude sessions from delivered message frames, or persist their current Registry affiliation |
158
167
 
159
- Canonical spelling: `projmux agent status`, `projmux agent topic`, `projmux agent resume`, `projmux agent persona attach`, `projmux agent persona detach`, `projmux agent turn start`, `projmux agent turn steer`, `projmux agent turn interrupt`, `projmux agent approval review`, `projmux agent review`, `projmux agent integrate`, `projmux agent usage`, `projmux agent capabilities`, `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`, `projmux agent wait`, `projmux agent question enable`, `projmux agent question disable`, `projmux agent question list`, `projmux agent question answer`
168
+ Canonical spelling: `projmux agent status`, `projmux agent topic`, `projmux agent resume`, `projmux agent relaunch`, `projmux agent turn start`, `projmux agent turn steer`, `projmux agent turn interrupt`, `projmux agent approval review`, `projmux agent approval list`, `projmux agent approval answer`, `projmux agent review`, `projmux agent integrate`, `projmux agent usage`, `projmux agent capabilities`, `projmux agent models`, `projmux agent message send`, `projmux agent message status`, `projmux agent message qualify`, `projmux agent wait`, `projmux agent question enable`, `projmux agent question disable`, `projmux agent question list`, `projmux agent question answer`, `projmux agent sessions list`, `projmux agent sessions backfill`, `projmux agent sessions project`, `projmux agent sessions attribute`
160
169
 
161
170
  ### `projmux agent status`
162
171
 
@@ -219,43 +228,22 @@ Allowed effects:
219
228
  - `domain-effect=null`
220
229
 
221
230
  ```
222
- projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
231
+ projmux agent resume <ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--model <model>] [--effort <level>] [--dialogue-reply-only]
223
232
  ```
224
233
 
225
- ### `projmux agent persona`
234
+ A Codex CLI resume reapplies the Agent's current Profile sandbox and approval. Codex CLI cannot apply approval=untrusted; that resume is refused before creating a Pane.
226
235
 
227
- Attach or detach a persona on one exact Claude Agent and resume it on the same conversation
236
+ Codex keeps the developer instructions its thread started with; resume cannot replace them.
228
237
 
229
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
230
-
231
- Allowed effects:
238
+ --model and --effort are recorded on the Agent with the source resume (projmux.io/model-source, projmux.io/effort-source).
232
239
 
233
- - `identity=unchanged`
234
- - `address=unchanged`
235
- - `topology=unchanged`
236
- - `desired-state=unchanged`
237
- - `runtime=unchanged`
238
- - `focus=unchanged`
239
- - `cardinality=exact-one`
240
- - `domain-effect=null`
240
+ Items the Agent does not override take its profile's current instructions, model, and effort; the model is passed only when it changed.
241
241
 
242
- ```
243
- projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
244
- projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
245
- ```
242
+ The new Pane carries the name of the Agent's old Pane row; when delete pane left no such row, it is named <agent-name>-pane as create agent names it. A name that cannot be used leaves the automatic one, and a held name is disclosed in one stderr line.
246
243
 
247
- Subcommands:
244
+ ### `projmux agent relaunch`
248
245
 
249
- | Route | Summary |
250
- | --- | --- |
251
- | [`projmux agent persona attach`](#projmux-agent-persona-attach) | Give one exact Claude Agent a persona and restart it on the same conversation |
252
- | [`projmux agent persona detach`](#projmux-agent-persona-detach) | Take the persona off one exact Claude Agent and restart it on the same conversation |
253
-
254
- Canonical spelling: `projmux agent persona attach`, `projmux agent persona detach`
255
-
256
- #### `projmux agent persona attach`
257
-
258
- Give one exact Claude Agent a persona and restart it on the same conversation
246
+ Restart one exact Claude or Codex Agent on the same conversation with another profile, instructions, model, or effort
259
247
 
260
248
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
261
249
 
@@ -271,37 +259,22 @@ Allowed effects:
271
259
  - `domain-effect=null`
272
260
 
273
261
  ```
274
- projmux agent persona attach <agent-ref> <persona> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
262
+ projmux agent relaunch <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--profile <name>|none] [--instructions <name>|none] [--model <model>] [--effort <level>] [--reset <item>[,...]|all] [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
275
263
  ```
276
264
 
277
- Output modes (`-o`): `json`
278
-
279
- #### `projmux agent persona detach`
280
-
281
- Take the persona off one exact Claude Agent and restart it on the same conversation
265
+ The model and effort are recorded on the Agent (projmux.io/model, projmux.io/effort) with the source relaunch (projmux.io/model-source, projmux.io/effort-source); later resumes re-pass the effort but not the model.
282
266
 
283
- Selectorless authority: `explicit-target` — the route or caller must name the exact target.
267
+ --profile switches the Agent's profile (none: no profile) and clears every override but the ones given with it; naming the profile it has keeps its overrides. --instructions overrides the instructions (none: no instructions), and --reset removes the overrides of instructions, model, or effort (all: every one) so they follow the profile again. It is all one restart.
284
268
 
285
- Allowed effects:
286
-
287
- - `identity=unchanged|reused`
288
- - `address=unchanged`
289
- - `topology=unchanged|replaced`
290
- - `desired-state=unchanged|replaced`
291
- - `runtime=unchanged|materialized`
292
- - `focus=unchanged`
293
- - `cardinality=exact-one`
294
- - `domain-effect=null`
269
+ A Codex Agent refuses a change of its instructions (codex-instructions-immutable) and a profile switch that would keep the old sandbox or approval (relaunch-codex-permissions-kept).
295
270
 
296
- ```
297
- projmux agent persona detach <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--yes] [--dry-run] [--socket <name> | --socket-path <absolute>] [-o json]
298
- ```
271
+ Without flags it restarts the Agent with the settings its profile and overrides resolve to now, or reports unchanged; -o json carries currentSettings, newSettings, and relaunchReasons.
299
272
 
300
273
  Output modes (`-o`): `json`
301
274
 
302
275
  ### `projmux agent turn`
303
276
 
304
- Send, steer, or interrupt one exact native Codex turn
277
+ Send or steer one exact native Codex turn, or interrupt an exact Codex or Claude turn
305
278
 
306
279
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
307
280
 
@@ -318,7 +291,7 @@ Allowed effects:
318
291
 
319
292
  ```
320
293
  projmux agent turn start|steer <agent-ref> -- <text>
321
- projmux agent turn interrupt <agent-ref>
294
+ projmux agent turn interrupt <agent-ref> [--via <client>]
322
295
  ```
323
296
 
324
297
  Subcommands:
@@ -327,7 +300,7 @@ Subcommands:
327
300
  | --- | --- |
328
301
  | [`projmux agent turn start`](#projmux-agent-turn-start) | Send a new turn to one exact idle Codex thread |
329
302
  | [`projmux agent turn steer`](#projmux-agent-turn-steer) | Request provider acceptance for one exact current Codex turn; delivery remains unconfirmed |
330
- | [`projmux agent turn interrupt`](#projmux-agent-turn-interrupt) | Interrupt one exact current Codex turn |
303
+ | [`projmux agent turn interrupt`](#projmux-agent-turn-interrupt) | Interrupt one exact current Codex turn or send Esc to one fresh in-progress Claude turn |
331
304
 
332
305
  Canonical spelling: `projmux agent turn start`, `projmux agent turn steer`, `projmux agent turn interrupt`
333
306
 
@@ -375,7 +348,7 @@ projmux agent turn steer <agent-ref> -- <text>
375
348
 
376
349
  #### `projmux agent turn interrupt`
377
350
 
378
- Interrupt one exact current Codex turn
351
+ Interrupt one exact current Codex turn or send Esc to one fresh in-progress Claude turn
379
352
 
380
353
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
381
354
 
@@ -391,12 +364,14 @@ Allowed effects:
391
364
  - `domain-effect=null`
392
365
 
393
366
  ```
394
- projmux agent turn interrupt <agent-ref>
367
+ projmux agent turn interrupt <agent-ref> [--via <client>]
395
368
  ```
396
369
 
370
+ Claude requires explicit --via <client>: cli, popup, or an operator client name of 1-32 lowercase ASCII letters, digits, and '-', starting with a letter; another name is refused as operator-client-invalid. The source is reported by the caller and does not prove which client was used or who the user is. A sent Esc confirms tmux delivery, not Claude cancellation. The private state file agent-turn-interrupt-audit.jsonl records the exact Agent and Pane UIDs, time, source, and delivery outcome.
371
+
397
372
  ### `projmux agent approval`
398
373
 
399
- Review one exact pending native Codex approval
374
+ Review one exact pending native Codex approval, or list and answer Claude and Codex permission requests
400
375
 
401
376
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
402
377
 
@@ -413,6 +388,8 @@ Allowed effects:
413
388
 
414
389
  ```
415
390
  projmux agent approval review <agent-ref> [--request <normalized-id>]
391
+ projmux agent approval list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
392
+ projmux agent approval answer <agent-ref> <request-id> (--allow | --deny) [--via <popup|cli|client>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
416
393
  ```
417
394
 
418
395
  Subcommands:
@@ -420,8 +397,10 @@ Subcommands:
420
397
  | Route | Summary |
421
398
  | --- | --- |
422
399
  | [`projmux agent approval review`](#projmux-agent-approval-review) | Review one exact pending native Codex approval |
400
+ | [`projmux agent approval list`](#projmux-agent-approval-list) | List one exact Claude or Codex Agent's waiting permission requests with their full tool input |
401
+ | [`projmux agent approval answer`](#projmux-agent-approval-answer) | Allow or deny one waiting Claude or Codex permission request once; the first answer wins |
423
402
 
424
- Canonical spelling: `projmux agent approval review`
403
+ Canonical spelling: `projmux agent approval review`, `projmux agent approval list`, `projmux agent approval answer`
425
404
 
426
405
  #### `projmux agent approval review`
427
406
 
@@ -444,6 +423,64 @@ Allowed effects:
444
423
  projmux agent approval review <agent-ref> [--request <normalized-id>]
445
424
  ```
446
425
 
426
+ #### `projmux agent approval list`
427
+
428
+ List one exact Claude or Codex Agent's waiting permission requests with their full tool input
429
+
430
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
431
+
432
+ Allowed effects:
433
+
434
+ - `identity=unchanged`
435
+ - `address=unchanged`
436
+ - `topology=unchanged`
437
+ - `desired-state=unchanged`
438
+ - `runtime=unchanged`
439
+ - `focus=unchanged`
440
+ - `cardinality=exact-one`
441
+ - `domain-effect=null`
442
+
443
+ ```
444
+ projmux agent approval list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
445
+ ```
446
+
447
+ A Claude Agent lists the permission requests captured while `config agent-approvals --answering projmux` is set.
448
+
449
+ A Codex Agent lists the pending approvals of its exact native control binding in either answering way: toolName is the approval kind, toolInput its details, answers the flags `agent approval answer` can send, and denyDecision what --deny sends (decline: the turn continues; cancel: the turn stops). An ambiguous request id, or one offering neither allow nor deny, is marked for `agent approval review`.
450
+
451
+ A listed request may already have been answered in Claude Code's own prompt, the Codex TUI, or `agent approval review`, which stay usable; the first answer wins.
452
+
453
+ Output modes (`-o`): `json`
454
+
455
+ #### `projmux agent approval answer`
456
+
457
+ Allow or deny one waiting Claude or Codex permission request once; the first answer wins
458
+
459
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
460
+
461
+ Allowed effects:
462
+
463
+ - `identity=unchanged`
464
+ - `address=unchanged`
465
+ - `topology=unchanged`
466
+ - `desired-state=unchanged`
467
+ - `runtime=unchanged`
468
+ - `focus=unchanged`
469
+ - `cardinality=exact-one`
470
+ - `domain-effect=null`
471
+
472
+ ```
473
+ projmux agent approval answer <agent-ref> <request-id> (--allow | --deny) [--via <popup|cli|client>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
474
+ ```
475
+
476
+ --allow runs that one tool call as requested; it never changes a permission rule or the tool input. --deny blocks it. Exactly one of them is required.
477
+
478
+ --via (default cli) is recorded in the audit log as the caller reports it; it is not verified. It takes popup, cli, or an operator client name under the same rule as `agent turn interrupt --via`; another name is refused as operator-client-invalid.
479
+
480
+ A second or late answer, or one on a request already answered in Claude Code's own prompt, is refused as permission-not-pending.
481
+
482
+ For a Codex Agent, --allow sends accept, never a widened grant; --deny sends decline when offered, otherwise cancel, which also interrupts the turn; nothing runs either way. A request offering no fitting decision is refused as permission-decision-unavailable, and the result line names the decision sent. It needs `config agent-approvals --answering projmux`, an unknown or ambiguous id is permission-not-pending, and the allowed or denied audit line is written before the answer is sent. `agent approval review` keeps every decision and the picker.
483
+
447
484
  ### `projmux agent review`
448
485
 
449
486
  Start a native review on an exact-bound Codex Agent
@@ -525,7 +562,30 @@ Allowed effects:
525
562
  - `domain-effect=null`
526
563
 
527
564
  ```
528
- projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json]
565
+ projmux agent capabilities [<agent-ref> | --provider <codex|claude|antigravity>] [-o json] [--json]
566
+ ```
567
+
568
+ Output modes (`-o`): `json`
569
+
570
+ ### `projmux agent models`
571
+
572
+ List model suggestions for Claude (default) or Codex (app-server); other names are still accepted
573
+
574
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
575
+
576
+ Allowed effects:
577
+
578
+ - `identity=unchanged`
579
+ - `address=unchanged`
580
+ - `topology=unchanged`
581
+ - `desired-state=unchanged`
582
+ - `runtime=unchanged`
583
+ - `focus=unchanged`
584
+ - `cardinality=unchanged`
585
+ - `domain-effect=null`
586
+
587
+ ```
588
+ projmux agent models [--provider <claude|codex>] [-o json]
529
589
  ```
530
590
 
531
591
  Output modes (`-o`): `json`
@@ -550,7 +610,7 @@ Allowed effects:
550
610
  ```
551
611
  projmux agent message send <agent-ref> [--source <agent-ref>] [--message-ref <ref>] [--reply-to <ref>] [--ttl <duration>] -- <text>
552
612
  projmux agent message status <message-ref> [-o json]
553
- projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
613
+ projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json [--timeout <duration>]
554
614
  ```
555
615
 
556
616
  Subcommands:
@@ -625,7 +685,7 @@ Allowed effects:
625
685
  - `domain-effect=agent-delivery`
626
686
 
627
687
  ```
628
- projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json
688
+ projmux agent message qualify <claude-agent-ref> --evidence <absolute-private-json> --confirm-isolated-provider-push -o json [--timeout <duration>]
629
689
  ```
630
690
 
631
691
  Output modes (`-o`): `json`
@@ -655,7 +715,7 @@ Output modes (`-o`): `json`
655
715
 
656
716
  ### `projmux agent question`
657
717
 
658
- Answer one exact opted-in Claude Agent's AskUserQuestion prompts from the command line
718
+ Answer one exact opted-in Claude or Codex Agent's questions from the command line
659
719
 
660
720
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
661
721
 
@@ -671,26 +731,26 @@ Allowed effects:
671
731
  - `domain-effect=null`
672
732
 
673
733
  ```
674
- projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
675
- projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
676
- projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
677
- projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
734
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
735
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
736
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
737
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
678
738
  ```
679
739
 
680
740
  Subcommands:
681
741
 
682
742
  | Route | Summary |
683
743
  | --- | --- |
684
- | [`projmux agent question enable`](#projmux-agent-question-enable) | Opt one exact Claude Agent into answering its AskUserQuestion prompts from the command line |
685
- | [`projmux agent question disable`](#projmux-agent-question-disable) | Opt one exact Claude Agent out and hand its waiting questions back to its own prompt |
686
- | [`projmux agent question list`](#projmux-agent-question-list) | List one exact Claude Agent's waiting and recent questions |
744
+ | [`projmux agent question enable`](#projmux-agent-question-enable) | Opt one exact Claude or Codex Agent into answering questions from the command line |
745
+ | [`projmux agent question disable`](#projmux-agent-question-disable) | Opt one exact Claude or Codex Agent out of command-line answers |
746
+ | [`projmux agent question list`](#projmux-agent-question-list) | List one exact Claude or Codex Agent's waiting and recent questions |
687
747
  | [`projmux agent question answer`](#projmux-agent-question-answer) | Answer one waiting question by option label, option number, or explicit free text |
688
748
 
689
749
  Canonical spelling: `projmux agent question enable`, `projmux agent question disable`, `projmux agent question list`, `projmux agent question answer`
690
750
 
691
751
  #### `projmux agent question enable`
692
752
 
693
- Opt one exact Claude Agent into answering its AskUserQuestion prompts from the command line
753
+ Opt one exact Claude or Codex Agent into answering questions from the command line
694
754
 
695
755
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
696
756
 
@@ -706,12 +766,12 @@ Allowed effects:
706
766
  - `domain-effect=null`
707
767
 
708
768
  ```
709
- projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
769
+ projmux agent question enable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
710
770
  ```
711
771
 
712
772
  #### `projmux agent question disable`
713
773
 
714
- Opt one exact Claude Agent out and hand its waiting questions back to its own prompt
774
+ Opt one exact Claude or Codex Agent out of command-line answers
715
775
 
716
776
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
717
777
 
@@ -727,12 +787,12 @@ Allowed effects:
727
787
  - `domain-effect=null`
728
788
 
729
789
  ```
730
- projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
790
+ projmux agent question disable <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
731
791
  ```
732
792
 
733
793
  #### `projmux agent question list`
734
794
 
735
- List one exact Claude Agent's waiting and recent questions
795
+ List one exact Claude or Codex Agent's waiting and recent questions
736
796
 
737
797
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
738
798
 
@@ -748,7 +808,7 @@ Allowed effects:
748
808
  - `domain-effect=null`
749
809
 
750
810
  ```
751
- projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o json]
811
+ projmux agent question list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
752
812
  ```
753
813
 
754
814
  Output modes (`-o`): `json`
@@ -771,9 +831,136 @@ Allowed effects:
771
831
  - `domain-effect=null`
772
832
 
773
833
  ```
774
- projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
834
+ projmux agent question answer <agent-ref> <question-id> [--option <n>=<label>]... [--index <n>=<k>]... [--text <n>=<text>]... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
835
+ ```
836
+
837
+ ### `projmux agent sessions`
838
+
839
+ List the Claude or Codex conversations an Agent or a Project has moved through, backfill past Claude sessions from delivered message frames, or persist their current Registry affiliation
840
+
841
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
842
+
843
+ Allowed effects:
844
+
845
+ - `identity=unchanged`
846
+ - `address=unchanged`
847
+ - `topology=unchanged`
848
+ - `desired-state=unchanged`
849
+ - `runtime=unchanged`
850
+ - `focus=unchanged`
851
+ - `cardinality=exact-one`
852
+ - `domain-effect=null`
853
+
854
+ ```
855
+ projmux agent sessions list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
856
+ projmux agent sessions backfill [--dry-run] [-o json]
857
+ projmux agent sessions project <project-ref> [-o json]
858
+ projmux agent sessions attribute [--dry-run] [-o json]
859
+ ```
860
+
861
+ Subcommands:
862
+
863
+ | Route | Summary |
864
+ | --- | --- |
865
+ | [`projmux agent sessions list`](#projmux-agent-sessions-list) | List one exact Claude or Codex Agent's recorded and current conversations in time order |
866
+ | [`projmux agent sessions backfill`](#projmux-agent-sessions-backfill) | Append past Claude sessions attributable to exactly one Agent by their delivered message frames as estimated history |
867
+ | [`projmux agent sessions project`](#projmux-agent-sessions-project) | List the Claude and Codex conversations attributed to one exact Project, by recorded affiliation or the current Registry |
868
+ | [`projmux agent sessions attribute`](#projmux-agent-sessions-attribute) | Append the current Registry affiliation of Claude and Codex sessions whose history rows carry no Project, so they stay attributed after their Agent is deleted |
869
+
870
+ Canonical spelling: `projmux agent sessions list`, `projmux agent sessions backfill`, `projmux agent sessions project`, `projmux agent sessions attribute`
871
+
872
+ #### `projmux agent sessions list`
873
+
874
+ List one exact Claude or Codex Agent's recorded and current conversations in time order
875
+
876
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
877
+
878
+ Allowed effects:
879
+
880
+ - `identity=unchanged`
881
+ - `address=unchanged`
882
+ - `topology=unchanged`
883
+ - `desired-state=unchanged`
884
+ - `runtime=unchanged`
885
+ - `focus=unchanged`
886
+ - `cardinality=exact-one`
887
+ - `domain-effect=null`
888
+
889
+ ```
890
+ projmux agent sessions list <agent-ref> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o json]
891
+ ```
892
+
893
+ Output modes (`-o`): `json`
894
+
895
+ #### `projmux agent sessions backfill`
896
+
897
+ Append past Claude sessions attributable to exactly one Agent by their delivered message frames as estimated history
898
+
899
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
900
+
901
+ Allowed effects:
902
+
903
+ - `identity=unchanged`
904
+ - `address=unchanged`
905
+ - `topology=unchanged`
906
+ - `desired-state=unchanged`
907
+ - `runtime=unchanged`
908
+ - `focus=unchanged`
909
+ - `cardinality=unchanged`
910
+ - `domain-effect=null`
911
+
912
+ ```
913
+ projmux agent sessions backfill [--dry-run] [-o json]
914
+ ```
915
+
916
+ Output modes (`-o`): `json`
917
+
918
+ #### `projmux agent sessions project`
919
+
920
+ List the Claude and Codex conversations attributed to one exact Project, by recorded affiliation or the current Registry
921
+
922
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
923
+
924
+ Allowed effects:
925
+
926
+ - `identity=unchanged`
927
+ - `address=unchanged`
928
+ - `topology=unchanged`
929
+ - `desired-state=unchanged`
930
+ - `runtime=unchanged`
931
+ - `focus=unchanged`
932
+ - `cardinality=exact-one`
933
+ - `domain-effect=null`
934
+
935
+ ```
936
+ projmux agent sessions project <project-ref> [-o json]
775
937
  ```
776
938
 
939
+ Output modes (`-o`): `json`
940
+
941
+ #### `projmux agent sessions attribute`
942
+
943
+ Append the current Registry affiliation of Claude and Codex sessions whose history rows carry no Project, so they stay attributed after their Agent is deleted
944
+
945
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
946
+
947
+ Allowed effects:
948
+
949
+ - `identity=unchanged`
950
+ - `address=unchanged`
951
+ - `topology=unchanged`
952
+ - `desired-state=unchanged`
953
+ - `runtime=unchanged`
954
+ - `focus=unchanged`
955
+ - `cardinality=unchanged`
956
+ - `domain-effect=null`
957
+
958
+ ```
959
+ projmux agent sessions attribute [--dry-run] [-o json]
960
+ ```
961
+
962
+ Output modes (`-o`): `json`
963
+
777
964
  ## `projmux attention`
778
965
 
779
966
  View and manage live tmux pane attention state
@@ -792,7 +979,11 @@ Allowed effects:
792
979
  - `domain-effect=null`
793
980
 
794
981
  ```
795
- projmux attention toggle|clear|arm|list|window
982
+ projmux attention toggle [pane]
983
+ projmux attention clear [pane]
984
+ projmux attention arm [pane]
985
+ projmux attention list [--json] [--all]
986
+ projmux attention window [window] [style]
796
987
  ```
797
988
 
798
989
  Subcommands:
@@ -888,7 +1079,7 @@ Allowed effects:
888
1079
  - `domain-effect=null`
889
1080
 
890
1081
  ```
891
- projmux attention list
1082
+ projmux attention list [--json] [--all]
892
1083
  ```
893
1084
 
894
1085
  ### `projmux attention window`
@@ -909,7 +1100,7 @@ Allowed effects:
909
1100
  - `domain-effect=null`
910
1101
 
911
1102
  ```
912
- projmux attention window
1103
+ projmux attention window [window] [style]
913
1104
  ```
914
1105
 
915
1106
  ## `projmux attach`
@@ -964,7 +1155,7 @@ projmux attach project <ref>
964
1155
 
965
1156
  ## `projmux config`
966
1157
 
967
- Edit AI split-mode and enabled-provider settings; render or apply generated tmux configuration
1158
+ Edit AI split-mode, enabled-provider, locale, and agent-question settings; render or apply generated tmux configuration
968
1159
 
969
1160
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
970
1161
 
@@ -982,8 +1173,11 @@ Allowed effects:
982
1173
  ```
983
1174
  projmux config edit [--get|--set <mode>]
984
1175
  projmux config providers [--enable <id>|--disable <id>]
1176
+ projmux config locale [--set <value>]
1177
+ projmux config agent-questions [--answering <claude|projmux>] [--window <seconds|unlimited>]
1178
+ projmux config agent-approvals [--answering <claude|projmux>] [--window <seconds>]
985
1179
  projmux config render standalone|app [--bin <path>]
986
- projmux config apply [--bin <path>] [--config <path>] [--socket <name>]
1180
+ projmux config apply [--bin <path>] [--config <path>] [--socket <name>] [--no-reload]
987
1181
  ```
988
1182
 
989
1183
  Subcommands:
@@ -992,10 +1186,13 @@ Subcommands:
992
1186
  | --- | --- |
993
1187
  | [`projmux config edit`](#projmux-config-edit) | Edit the AI split-mode configuration |
994
1188
  | [`projmux config providers`](#projmux-config-providers) | List AI providers as enabled or disabled; --enable or --disable changes one |
1189
+ | [`projmux config locale`](#projmux-config-locale) | Show the [ui] locale setting and its config.toml; --set stores a new one |
1190
+ | [`projmux config agent-questions`](#projmux-config-agent-questions) | Show how Claude and Codex agent questions are answered and how long they wait; --answering or --window changes them |
1191
+ | [`projmux config agent-approvals`](#projmux-config-agent-approvals) | Show how agent permission requests are answered and how long a captured one waits; --answering or --window changes them |
995
1192
  | [`projmux config render`](#projmux-config-render) | Print a generated tmux config to stdout; writes nothing |
996
1193
  | [`projmux config apply`](#projmux-config-apply) | Write the generated app tmux config and reload the live projmux server |
997
1194
 
998
- Canonical spelling: `projmux config edit`, `projmux config providers`, `projmux config render`, `projmux config apply`
1195
+ Canonical spelling: `projmux config edit`, `projmux config providers`, `projmux config locale`, `projmux config agent-questions`, `projmux config agent-approvals`, `projmux config render`, `projmux config apply`
999
1196
 
1000
1197
  ### `projmux config edit`
1001
1198
 
@@ -1018,6 +1215,8 @@ Allowed effects:
1018
1215
  projmux config edit [--get|--set <mode>]
1019
1216
  ```
1020
1217
 
1218
+ `--get` prints the TUI split default `tmux-ai-split-mode` when it holds a valid mode, else the central `ai-new-window-mode`, else `selective`. `--set` writes only `tmux-ai-split-mode`.
1219
+
1021
1220
  ### `projmux config providers`
1022
1221
 
1023
1222
  List AI providers as enabled or disabled; --enable or --disable changes one
@@ -1041,6 +1240,78 @@ projmux config providers --enable <id>
1041
1240
  projmux config providers --disable <id>
1042
1241
  ```
1043
1242
 
1243
+ ### `projmux config locale`
1244
+
1245
+ Show the [ui] locale setting and its config.toml; --set stores a new one
1246
+
1247
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1248
+
1249
+ Allowed effects:
1250
+
1251
+ - `identity=unchanged`
1252
+ - `address=unchanged`
1253
+ - `topology=unchanged`
1254
+ - `desired-state=unchanged`
1255
+ - `runtime=unchanged`
1256
+ - `focus=unchanged`
1257
+ - `cardinality=unchanged`
1258
+ - `domain-effect=null`
1259
+
1260
+ ```
1261
+ projmux config locale
1262
+ projmux config locale --set <value>
1263
+ ```
1264
+
1265
+ ### `projmux config agent-questions`
1266
+
1267
+ Show how Claude and Codex agent questions are answered and how long they wait; --answering or --window changes them
1268
+
1269
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1270
+
1271
+ Allowed effects:
1272
+
1273
+ - `identity=unchanged`
1274
+ - `address=unchanged`
1275
+ - `topology=unchanged`
1276
+ - `desired-state=unchanged`
1277
+ - `runtime=unchanged`
1278
+ - `focus=unchanged`
1279
+ - `cardinality=unchanged`
1280
+ - `domain-effect=null`
1281
+
1282
+ ```
1283
+ projmux config agent-questions
1284
+ projmux config agent-questions --answering <claude|projmux>
1285
+ projmux config agent-questions --window <seconds|unlimited>
1286
+ ```
1287
+
1288
+ ### `projmux config agent-approvals`
1289
+
1290
+ Show how agent permission requests are answered and how long a captured one waits; --answering or --window changes them
1291
+
1292
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1293
+
1294
+ Allowed effects:
1295
+
1296
+ - `identity=unchanged`
1297
+ - `address=unchanged`
1298
+ - `topology=unchanged`
1299
+ - `desired-state=unchanged`
1300
+ - `runtime=unchanged`
1301
+ - `focus=unchanged`
1302
+ - `cardinality=unchanged`
1303
+ - `domain-effect=null`
1304
+
1305
+ ```
1306
+ projmux config agent-approvals [--answering <claude|projmux>] [--window <seconds>]
1307
+ ```
1308
+
1309
+ `claude` (default) leaves every Claude request to Claude Code's own prompt and refuses `agent approval answer`. `projmux` also captures Claude permission requests and lets `agent approval answer` allow or deny Claude and Codex requests remotely; the provider's own prompt stays usable and the first answer wins.
1310
+
1311
+ Codex approvals are never captured: the provider holds them, `agent approval list` shows them in either way, and `agent approval review` answers them in either way.
1312
+
1313
+ --window is 60..3600 seconds (default 900); there is no unlimited value. An unanswered request expires with no decision.
1314
+
1044
1315
  ### `projmux config render`
1045
1316
 
1046
1317
  Print a generated tmux config to stdout; writes nothing
@@ -1134,7 +1405,7 @@ Allowed effects:
1134
1405
  - `domain-effect=null`
1135
1406
 
1136
1407
  ```
1137
- projmux config apply [--bin <path>] [--config <path>] [--socket <name>]
1408
+ projmux config apply [--bin <path>] [--config <path>] [--socket <name>] [--no-reload]
1138
1409
  ```
1139
1410
 
1140
1411
  ## `projmux create`
@@ -1156,12 +1427,13 @@ Allowed effects:
1156
1427
 
1157
1428
  ```
1158
1429
  projmux create project --root <absolute-path> [--name <name>] [--label key=value]... [-o <mode>]
1159
- projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1160
- projmux create pane [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1161
- projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1162
- projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--persona <name>] [--window <ref> | -w <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1163
- projmux create claude|antigravity [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--window <ref> | -w <ref>]... [--create-window] [--all-windows | --primary-window] [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1164
- projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>]
1430
+ projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--creator uid:<agent>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1431
+ projmux create pane [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1432
+ projmux create agent [--provider <provider>] [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--dialogue-reply-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1433
+ projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1434
+ projmux create claude [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--dialogue-reply-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1435
+ projmux create antigravity [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--profile <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1436
+ projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>] [--severity info|warn|critical] [--source <source>] [--ttl <seconds>] [--id <id>] [--json]
1165
1437
  ```
1166
1438
 
1167
1439
  Subcommands:
@@ -1171,7 +1443,7 @@ Subcommands:
1171
1443
  | [`projmux create project`](#projmux-create-project) | Register one exact filesystem path as a Registry Project; no runtime is materialized |
1172
1444
  | [`projmux create window`](#projmux-create-window) | Create a Window below one Project, opening on a shell Pane or on one Agent; the runtime is materialized detached |
1173
1445
  | [`projmux create pane`](#projmux-create-pane) | Create a shell Pane detached on an explicit Pane or the Window's exact shell or Agent anchor |
1174
- | [`projmux create agent`](#projmux-create-agent) | Create an Agent detached on an explicit Pane or the Window's exact shell or Agent anchor; --provider is required |
1446
+ | [`projmux create agent`](#projmux-create-agent) | Create an Agent detached on an explicit Pane or the Window's exact shell or Agent anchor; --provider or the selected profile names the provider |
1175
1447
  | [`projmux create notification`](#projmux-create-notification) | Create a pending notification row |
1176
1448
 
1177
1449
  Provider shortcuts:
@@ -1229,9 +1501,11 @@ Allowed effects:
1229
1501
  - `domain-effect=null`
1230
1502
 
1231
1503
  ```
1232
- projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1504
+ projmux create window [--project <ref> | -p <ref>] [--provider shell|<provider>] [--creator uid:<agent>] [--name <name>] [--label key=value]... [-o <mode>] [-- <payload>]
1233
1505
  ```
1234
1506
 
1507
+ `--creator uid:<agent>` declares the Agent that created this one. It is recorded as `projmux.io/creator-basis=explicit` with `projmux.io/creator-agent` only when no pane chain is observed; an observed pane chain always wins, and a different declaration is reported on stderr. A value that names no Agent refuses the create before anything changes. The record is provenance, never authentication.
1508
+
1235
1509
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
1236
1510
 
1237
1511
  ### `projmux create pane`
@@ -1259,7 +1533,7 @@ Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`
1259
1533
 
1260
1534
  ### `projmux create agent`
1261
1535
 
1262
- Create an Agent detached on an explicit Pane or the Window's exact shell or Agent anchor; --provider is required
1536
+ Create an Agent detached on an explicit Pane or the Window's exact shell or Agent anchor; --provider or the selected profile names the provider
1263
1537
 
1264
1538
  Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
1265
1539
 
@@ -1275,9 +1549,17 @@ Allowed effects:
1275
1549
  - `domain-effect=null`
1276
1550
 
1277
1551
  ```
1278
- projmux create agent --provider <provider> [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1552
+ projmux create agent [--provider <provider>] [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--dialogue-reply-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1279
1553
  ```
1280
1554
 
1555
+ An explicit `--provider` wins, and a profile that names another provider is refused. Without `--provider`, the provider is the one named by the profile that `--profile <name>` or a `role` creation label selects.
1556
+
1557
+ When neither decides it -- no profile, `--profile none`, or a profile without `provider` -- the create is refused as requiring `--provider`.
1558
+
1559
+ Codex applies --instructions only when a new Agent starts with a prompt through its native thread. A promptless or --interactive-only Codex create with instructions is refused before creation.
1560
+
1561
+ `--creator uid:<agent>` declares the Agent that created this one. It is recorded as `projmux.io/creator-basis=explicit` with `projmux.io/creator-agent` only when no pane chain is observed; an observed pane chain always wins, and a different declaration is reported on stderr. A value that names no Agent refuses the create before anything changes. The record is provenance, never authentication.
1562
+
1281
1563
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
1282
1564
 
1283
1565
  ### `projmux create notification`
@@ -1298,7 +1580,7 @@ Allowed effects:
1298
1580
  - `domain-effect=null`
1299
1581
 
1300
1582
  ```
1301
- projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>]
1583
+ projmux create notification --text <s> --target <SESSION[:WINDOW[.PANE]]> [--socket <s>] [--severity info|warn|critical] [--source <source>] [--ttl <seconds>] [--id <id>] [--json]
1302
1584
  ```
1303
1585
 
1304
1586
  ### `projmux create codex`
@@ -1319,9 +1601,13 @@ Allowed effects:
1319
1601
  - `domain-effect=null`
1320
1602
 
1321
1603
  ```
1322
- projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1604
+ projmux create codex [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--interactive-only] [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1323
1605
  ```
1324
1606
 
1607
+ Profile sandbox and approval apply on native and plain CLI creates. A plain CLI create with approval=untrusted is refused before creating an Agent.
1608
+
1609
+ Instructions from --instructions or a Profile apply when the create includes a prompt and opens a native thread. Promptless and --interactive-only creates with instructions are refused.
1610
+
1325
1611
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
1326
1612
 
1327
1613
  ### `projmux create claude`
@@ -1342,7 +1628,7 @@ Allowed effects:
1342
1628
  - `domain-effect=null`
1343
1629
 
1344
1630
  ```
1345
- projmux create claude [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--model <model>] [--effort <level>] [--persona <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1631
+ projmux create claude [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--model <model>] [--effort <level>] [--instructions <name>] [--profile <name>] [--dialogue-reply-only] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1346
1632
  ```
1347
1633
 
1348
1634
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1365,7 +1651,7 @@ Allowed effects:
1365
1651
  - `domain-effect=null`
1366
1652
 
1367
1653
  ```
1368
- projmux create antigravity [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1654
+ projmux create antigravity [--project <ref> | -p <ref>] [--cwd <path>] [--add-dir <path>]... [--profile <name>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--create-window] [--all-windows | --primary-window] [--creator uid:<agent>] [--name <name>] [--label key=value]... [--placement right|down] [--cwd-from project|pane] [-o <mode>] [-- <payload>]
1369
1655
  ```
1370
1656
 
1371
1657
  Output modes (`-o`): `uid`, `name`, `ref`, `metadata`, `json`, `pane-id`, `none`, `receipt`
@@ -1388,10 +1674,11 @@ Allowed effects:
1388
1674
  - `domain-effect=null`
1389
1675
 
1390
1676
  ```
1391
- projmux delete project [<ref>...] [--selector key=value]... [--all] [--dry-run] [--yes]
1392
- projmux delete window [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1393
- projmux delete pane [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1394
- projmux delete agent [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1677
+ projmux delete project [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1678
+ projmux delete window [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1679
+ projmux delete pane [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1680
+ projmux delete agent [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1681
+ projmux delete notification <id> | --all
1395
1682
  ```
1396
1683
 
1397
1684
  Subcommands:
@@ -1424,7 +1711,7 @@ Allowed effects:
1424
1711
  - `domain-effect=null`
1425
1712
 
1426
1713
  ```
1427
- projmux delete project [<ref>...] [--selector key=value]... [--all] [--dry-run] [--yes]
1714
+ projmux delete project [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1428
1715
  ```
1429
1716
 
1430
1717
  Aliases: `projects`
@@ -1449,7 +1736,7 @@ Allowed effects:
1449
1736
  - `domain-effect=null`
1450
1737
 
1451
1738
  ```
1452
- projmux delete window [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1739
+ projmux delete window [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1453
1740
  ```
1454
1741
 
1455
1742
  Aliases: `windows`
@@ -1472,11 +1759,13 @@ Allowed effects:
1472
1759
  - `domain-effect=null`
1473
1760
 
1474
1761
  ```
1475
- projmux delete pane [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1762
+ projmux delete pane [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1476
1763
  ```
1477
1764
 
1478
1765
  Aliases: `panes`
1479
1766
 
1767
+ A selector that resolves to exactly one Pane deletes it without confirmation. No selector (the active Pane), --all, or several Panes need --yes, or a yes at the terminal prompt; without a terminal the delete is refused with exit 2. --dry-run only prints the plan.
1768
+
1480
1769
  ### `projmux delete agent`
1481
1770
 
1482
1771
  Delete Agents and their managed Panes; no selector inside tmux means the active Agent, and --all means every Agent in the registry
@@ -1495,7 +1784,7 @@ Allowed effects:
1495
1784
  - `domain-effect=null`
1496
1785
 
1497
1786
  ```
1498
- projmux delete agent [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1787
+ projmux delete agent [<ref>...] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
1499
1788
  ```
1500
1789
 
1501
1790
  Aliases: `agents`
@@ -1518,7 +1807,7 @@ Allowed effects:
1518
1807
  - `domain-effect=null`
1519
1808
 
1520
1809
  ```
1521
- projmux delete notification
1810
+ projmux delete notification <id> | --all
1522
1811
  ```
1523
1812
 
1524
1813
  Aliases: `notifications`
@@ -1541,10 +1830,10 @@ Allowed effects:
1541
1830
  - `domain-effect=null`
1542
1831
 
1543
1832
  ```
1544
- projmux describe project [<ref>] [--project <ref> | -p <ref>] [-o <mode>]
1545
- projmux describe window [<ref>] [--project <ref> | -p <ref>] [-o <mode>]
1546
- projmux describe pane [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o <mode>]
1547
- projmux describe agent [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o <mode>]
1833
+ projmux describe project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... [-o <mode>]
1834
+ projmux describe window [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
1835
+ projmux describe pane [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
1836
+ projmux describe agent [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
1548
1837
  ```
1549
1838
 
1550
1839
  Subcommands:
@@ -1576,7 +1865,7 @@ Allowed effects:
1576
1865
  - `domain-effect=null`
1577
1866
 
1578
1867
  ```
1579
- projmux describe project [<ref>] [--project <ref> | -p <ref>] [-o <mode>]
1868
+ projmux describe project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... [-o <mode>]
1580
1869
  ```
1581
1870
 
1582
1871
  Aliases: `projects`
@@ -1601,7 +1890,7 @@ Allowed effects:
1601
1890
  - `domain-effect=null`
1602
1891
 
1603
1892
  ```
1604
- projmux describe window [<ref>] [--project <ref> | -p <ref>] [-o <mode>]
1893
+ projmux describe window [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
1605
1894
  ```
1606
1895
 
1607
1896
  Aliases: `windows`
@@ -1626,7 +1915,7 @@ Allowed effects:
1626
1915
  - `domain-effect=null`
1627
1916
 
1628
1917
  ```
1629
- projmux describe pane [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o <mode>]
1918
+ projmux describe pane [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
1630
1919
  ```
1631
1920
 
1632
1921
  Aliases: `panes`
@@ -1651,7 +1940,7 @@ Allowed effects:
1651
1940
  - `domain-effect=null`
1652
1941
 
1653
1942
  ```
1654
- projmux describe agent [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [-o <mode>]
1943
+ projmux describe agent [<ref>] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
1655
1944
  ```
1656
1945
 
1657
1946
  Aliases: `agents`
@@ -1697,7 +1986,7 @@ Allowed effects:
1697
1986
  - `domain-effect=null`
1698
1987
 
1699
1988
  ```
1700
- projmux diagnostics log [--json] [--tail <n>]
1989
+ projmux diagnostics log [--json] [--tail <n>] [--level info|warn|error] [--component <name>] [--path]
1701
1990
  projmux diagnostics agent-hook [--tail <n>] [--json] [--path]
1702
1991
  projmux diagnostics report [--output <path>]
1703
1992
  ```
@@ -1730,7 +2019,7 @@ Allowed effects:
1730
2019
  - `domain-effect=null`
1731
2020
 
1732
2021
  ```
1733
- projmux diagnostics log
2022
+ projmux diagnostics log [--json] [--tail <n>] [--level info|warn|error] [--component <name>] [--path]
1734
2023
  ```
1735
2024
 
1736
2025
  ### `projmux diagnostics agent-hook`
@@ -1772,7 +2061,7 @@ Allowed effects:
1772
2061
  - `domain-effect=null`
1773
2062
 
1774
2063
  ```
1775
- projmux diagnostics report
2064
+ projmux diagnostics report [--output <path>]
1776
2065
  ```
1777
2066
 
1778
2067
  ## `projmux focus`
@@ -1793,11 +2082,11 @@ Allowed effects:
1793
2082
  - `domain-effect=null`
1794
2083
 
1795
2084
  ```
1796
- projmux focus project <ref>
1797
- projmux focus window <ref> {--project <ref> | -p <ref>}
1798
- projmux focus window uid:<uid> [--project <ref> | -p <ref>]
1799
- projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>}
1800
- projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]
2085
+ projmux focus project <ref> [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2086
+ projmux focus window <ref> {--project <ref> | -p <ref>} [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2087
+ projmux focus window uid:<uid> [--project <ref> | -p <ref>] [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2088
+ projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>} [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2089
+ projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>] [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
1801
2090
  ```
1802
2091
 
1803
2092
  Subcommands:
@@ -1828,7 +2117,7 @@ Allowed effects:
1828
2117
  - `domain-effect=null`
1829
2118
 
1830
2119
  ```
1831
- projmux focus project <ref> [--socket <path>] [--client <tty>] [--json]
2120
+ projmux focus project <ref> [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
1832
2121
  ```
1833
2122
 
1834
2123
  `<ref>` is the live tmux session name, or `uid:<uid>` for a Registry Project, which resolves to its `status.session.name`. A `uid:` ref uses the Project's recorded socket; an explicit `--socket` naming another server exits 2. The resolved session must still be live.
@@ -1851,8 +2140,8 @@ Allowed effects:
1851
2140
  - `domain-effect=null`
1852
2141
 
1853
2142
  ```
1854
- projmux focus window <ref> {--project <ref> | -p <ref>} [--socket <path>] [--client <tty>] [--json]
1855
- projmux focus window uid:<uid> [--project <ref> | -p <ref>] [--socket <path>] [--client <tty>] [--json]
2143
+ projmux focus window <ref> {--project <ref> | -p <ref>} [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2144
+ projmux focus window uid:<uid> [--project <ref> | -p <ref>] [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
1856
2145
  ```
1857
2146
 
1858
2147
  A plain `<ref>` is a live window name or `@id` and requires `--project`. `uid:<uid>` names a Registry Window, which resolves to its `status.runtimeID` inside its owning Project's session, so `--project` is optional; when given it must be that Project (`uid:` or its session name) or the route exits 2. `--project uid:<uid>` also works with a plain `<ref>`.
@@ -1877,8 +2166,8 @@ Allowed effects:
1877
2166
  - `domain-effect=null`
1878
2167
 
1879
2168
  ```
1880
- projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>} [--socket <path>] [--json]
1881
- projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>] [--socket <path>] [--json]
2169
+ projmux focus pane <ref> {--project <ref> | -p <ref>} {--window <ref> | -w <ref>} [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
2170
+ projmux focus pane uid:<uid> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>] [--socket <path>] [--client <tty>] [--source <source>] [--kind <kind>] [--json]
1882
2171
  ```
1883
2172
 
1884
2173
  A plain `<ref>` is a live pane name or `%id` and requires `--project` and `--window`. `uid:<uid>` names a Registry Pane, which resolves to its `status.activation.runtimeID` inside its owning Window and Project, so both flags are optional; when given they must match that owner chain or the route exits 2. `--project` and `--window` also accept `uid:<uid>` with a plain `<ref>`.
@@ -1908,8 +2197,9 @@ projmux get windows [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
1908
2197
  projmux get panes [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [--all-projects | -A] [-o <mode>]
1909
2198
  projmux get agents [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [--all-projects | -A] [-o <mode>]
1910
2199
  projmux get pane --current -o cwd
1911
- projmux get pane [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
2200
+ projmux get pane [--current] [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
1912
2201
  projmux get runtime sessions|windows|panes [--socket <name> | --socket-path <absolute>] [-o wide|json|none]
2202
+ projmux get notifications [--json] [--live] [--limit <n>] [--ui table|sidebar] [--client <tty>] [--severity <severity>]... [--source <source>]...
1913
2203
  ```
1914
2204
 
1915
2205
  Subcommands:
@@ -2144,7 +2434,7 @@ Allowed effects:
2144
2434
  - `domain-effect=null`
2145
2435
 
2146
2436
  ```
2147
- projmux get notifications
2437
+ projmux get notifications [--json] [--live] [--limit <n>] [--ui table|sidebar] [--client <tty>] [--severity <severity>]... [--source <source>]...
2148
2438
  ```
2149
2439
 
2150
2440
  Aliases: `notification`
@@ -2192,9 +2482,16 @@ Allowed effects:
2192
2482
  - `domain-effect=null`
2193
2483
 
2194
2484
  ```
2195
- projmux hook list|edit|validate|trust|untrust
2485
+ projmux hook list [--global | --project | --effective]
2486
+ projmux hook edit [--global | --project] [--editor] <event>
2487
+ projmux hook validate
2488
+ projmux hook trust [<project>]
2489
+ projmux hook untrust [<project>]
2196
2490
  ```
2197
2491
 
2492
+ Events:
2493
+ post-attach, post-create, pre-create, send-noti
2494
+
2198
2495
  Subcommands:
2199
2496
 
2200
2497
  | Route | Summary |
@@ -2225,7 +2522,7 @@ Allowed effects:
2225
2522
  - `domain-effect=null`
2226
2523
 
2227
2524
  ```
2228
- projmux hook list
2525
+ projmux hook list [--global | --project | --effective]
2229
2526
  ```
2230
2527
 
2231
2528
  ### `projmux hook edit`
@@ -2246,7 +2543,7 @@ Allowed effects:
2246
2543
  - `domain-effect=null`
2247
2544
 
2248
2545
  ```
2249
- projmux hook edit
2546
+ projmux hook edit [--global | --project] [--editor] <event>
2250
2547
  ```
2251
2548
 
2252
2549
  ### `projmux hook validate`
@@ -2288,7 +2585,7 @@ Allowed effects:
2288
2585
  - `domain-effect=null`
2289
2586
 
2290
2587
  ```
2291
- projmux hook trust
2588
+ projmux hook trust [<project>]
2292
2589
  ```
2293
2590
 
2294
2591
  ### `projmux hook untrust`
@@ -2309,7 +2606,7 @@ Allowed effects:
2309
2606
  - `domain-effect=null`
2310
2607
 
2311
2608
  ```
2312
- projmux hook untrust
2609
+ projmux hook untrust [<project>]
2313
2610
  ```
2314
2611
 
2315
2612
  ## `projmux label`
@@ -2330,10 +2627,10 @@ Allowed effects:
2330
2627
  - `domain-effect=null`
2331
2628
 
2332
2629
  ```
2333
- projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2334
- projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2335
- projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2336
- projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2630
+ projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--selector key=value]...
2631
+ projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
2632
+ projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]...
2633
+ projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
2337
2634
  ```
2338
2635
 
2339
2636
  Subcommands:
@@ -2365,7 +2662,7 @@ Allowed effects:
2365
2662
  - `domain-effect=null`
2366
2663
 
2367
2664
  ```
2368
- projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2665
+ projmux label project [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--selector key=value]...
2369
2666
  ```
2370
2667
 
2371
2668
  Aliases: `projects`
@@ -2388,7 +2685,7 @@ Allowed effects:
2388
2685
  - `domain-effect=null`
2389
2686
 
2390
2687
  ```
2391
- projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>]
2688
+ projmux label window [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
2392
2689
  ```
2393
2690
 
2394
2691
  Aliases: `windows`
@@ -2411,7 +2708,7 @@ Allowed effects:
2411
2708
  - `domain-effect=null`
2412
2709
 
2413
2710
  ```
2414
- projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2711
+ projmux label pane [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]...
2415
2712
  ```
2416
2713
 
2417
2714
  Aliases: `panes`
@@ -2434,7 +2731,7 @@ Allowed effects:
2434
2731
  - `domain-effect=null`
2435
2732
 
2436
2733
  ```
2437
- projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2734
+ projmux label agent [<ref>] <key=value|key->... [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]...
2438
2735
  ```
2439
2736
 
2440
2737
  Aliases: `agents`
@@ -2564,9 +2861,9 @@ projmux open project <ref> [-o receipt|none]
2564
2861
 
2565
2862
  Output modes (`-o`): `receipt`, `none`
2566
2863
 
2567
- ## `projmux persona`
2864
+ ## `projmux instructions`
2568
2865
 
2569
- List, show, edit, set, and delete Agent persona files
2866
+ List, show, edit, set, and delete Agent instruction files
2570
2867
 
2571
2868
  Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
2572
2869
 
@@ -2582,28 +2879,28 @@ Allowed effects:
2582
2879
  - `domain-effect=null`
2583
2880
 
2584
2881
  ```
2585
- projmux persona list
2586
- projmux persona show <name>
2587
- projmux persona edit <name>
2588
- projmux persona set <name> [--file <path> | -]
2589
- projmux persona delete <name> --yes
2882
+ projmux instructions list
2883
+ projmux instructions show <name>
2884
+ projmux instructions edit <name>
2885
+ projmux instructions set <name> [--file <path> | -]
2886
+ projmux instructions delete <name> --yes
2590
2887
  ```
2591
2888
 
2592
2889
  Subcommands:
2593
2890
 
2594
2891
  | Route | Summary |
2595
2892
  | --- | --- |
2596
- | [`projmux persona list`](#projmux-persona-list) | List every stored persona with its digest, size, and modification time |
2597
- | [`projmux persona show`](#projmux-persona-show) | Print one persona's content exactly as stored |
2598
- | [`projmux persona edit`](#projmux-persona-edit) | Edit one persona in $EDITOR or $VISUAL, creating it when missing |
2599
- | [`projmux persona set`](#projmux-persona-set) | Write one persona from a file or stdin without an editor |
2600
- | [`projmux persona delete`](#projmux-persona-delete) | Delete one persona file; Agents already started with it keep their snapshot |
2893
+ | [`projmux instructions list`](#projmux-instructions-list) | List every stored instructions with their digest, size, and modification time |
2894
+ | [`projmux instructions show`](#projmux-instructions-show) | Print one instruction's content exactly as stored |
2895
+ | [`projmux instructions edit`](#projmux-instructions-edit) | Edit one instruction in $EDITOR or $VISUAL, creating it when missing |
2896
+ | [`projmux instructions set`](#projmux-instructions-set) | Write one instruction from a file or stdin without an editor |
2897
+ | [`projmux instructions delete`](#projmux-instructions-delete) | Delete one instruction file no profile names; Agents already started with it keep their snapshot |
2601
2898
 
2602
- Canonical spelling: `projmux persona list`, `projmux persona show`, `projmux persona edit`, `projmux persona set`, `projmux persona delete`
2899
+ Canonical spelling: `projmux instructions list`, `projmux instructions show`, `projmux instructions edit`, `projmux instructions set`, `projmux instructions delete`
2603
2900
 
2604
- ### `projmux persona list`
2901
+ ### `projmux instructions list`
2605
2902
 
2606
- List every stored persona with its digest, size, and modification time
2903
+ List every stored instructions with their digest, size, and modification time
2607
2904
 
2608
2905
  Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
2609
2906
 
@@ -2619,12 +2916,12 @@ Allowed effects:
2619
2916
  - `domain-effect=null`
2620
2917
 
2621
2918
  ```
2622
- projmux persona list
2919
+ projmux instructions list
2623
2920
  ```
2624
2921
 
2625
- ### `projmux persona show`
2922
+ ### `projmux instructions show`
2626
2923
 
2627
- Print one persona's content exactly as stored
2924
+ Print one instruction's content exactly as stored
2628
2925
 
2629
2926
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2630
2927
 
@@ -2640,12 +2937,133 @@ Allowed effects:
2640
2937
  - `domain-effect=null`
2641
2938
 
2642
2939
  ```
2643
- projmux persona show <name>
2940
+ projmux instructions show <name>
2941
+ ```
2942
+
2943
+ ### `projmux instructions edit`
2944
+
2945
+ Edit one instruction in $EDITOR or $VISUAL, creating it when missing
2946
+
2947
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2948
+
2949
+ Allowed effects:
2950
+
2951
+ - `identity=unchanged`
2952
+ - `address=unchanged`
2953
+ - `topology=unchanged`
2954
+ - `desired-state=unchanged`
2955
+ - `runtime=unchanged`
2956
+ - `focus=unchanged`
2957
+ - `cardinality=unchanged`
2958
+ - `domain-effect=null`
2959
+
2960
+ ```
2961
+ projmux instructions edit <name>
2962
+ ```
2963
+
2964
+ ### `projmux instructions set`
2965
+
2966
+ Write one instruction from a file or stdin without an editor
2967
+
2968
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2969
+
2970
+ Allowed effects:
2971
+
2972
+ - `identity=unchanged`
2973
+ - `address=unchanged`
2974
+ - `topology=unchanged`
2975
+ - `desired-state=unchanged`
2976
+ - `runtime=unchanged`
2977
+ - `focus=unchanged`
2978
+ - `cardinality=unchanged`
2979
+ - `domain-effect=null`
2980
+
2981
+ ```
2982
+ projmux instructions set <name> [--file <path> | -]
2983
+ ```
2984
+
2985
+ ### `projmux instructions delete`
2986
+
2987
+ Delete one instruction file no profile names; Agents already started with it keep their snapshot
2988
+
2989
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2990
+
2991
+ Allowed effects:
2992
+
2993
+ - `identity=unchanged`
2994
+ - `address=unchanged`
2995
+ - `topology=unchanged`
2996
+ - `desired-state=unchanged`
2997
+ - `runtime=unchanged`
2998
+ - `focus=unchanged`
2999
+ - `cardinality=unchanged`
3000
+ - `domain-effect=null`
3001
+
3002
+ ```
3003
+ projmux instructions delete <name> --yes
3004
+ ```
3005
+
3006
+ ## `projmux profile`
3007
+
3008
+ List, show, set, and delete named Agent profiles
3009
+
3010
+ Selectorless authority: `refusal` — there is no safe selectorless action; refuse before output or mutation.
3011
+
3012
+ Allowed effects:
3013
+
3014
+ - `identity=unchanged`
3015
+ - `address=unchanged`
3016
+ - `topology=unchanged`
3017
+ - `desired-state=unchanged`
3018
+ - `runtime=unchanged`
3019
+ - `focus=unchanged`
3020
+ - `cardinality=unchanged`
3021
+ - `domain-effect=null`
3022
+
3023
+ ```
3024
+ projmux profile list
3025
+ projmux profile show <name>
3026
+ projmux profile set <name> [--file <path> | -]
3027
+ projmux profile delete <name> --yes
3028
+ ```
3029
+
3030
+ Codex applies Profile sandbox and approval on native and CLI lanes. Codex CLI accepts approval=on-request or never; approval=untrusted requires the native lane.
3031
+
3032
+ Subcommands:
3033
+
3034
+ | Route | Summary |
3035
+ | --- | --- |
3036
+ | [`projmux profile list`](#projmux-profile-list) | List every stored profile with its source, the provider, instructions, model, effort, and roles it names, its digest, and validity |
3037
+ | [`projmux profile show`](#projmux-profile-show) | Print one profile's content exactly as stored |
3038
+ | [`projmux profile set`](#projmux-profile-set) | Validate one profile from a file or stdin and write it only when valid |
3039
+ | [`projmux profile delete`](#projmux-profile-delete) | Delete one stored profile file |
3040
+
3041
+ Canonical spelling: `projmux profile list`, `projmux profile show`, `projmux profile set`, `projmux profile delete`
3042
+
3043
+ ### `projmux profile list`
3044
+
3045
+ List every stored profile with its source, the provider, instructions, model, effort, and roles it names, its digest, and validity
3046
+
3047
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3048
+
3049
+ Allowed effects:
3050
+
3051
+ - `identity=unchanged`
3052
+ - `address=unchanged`
3053
+ - `topology=unchanged`
3054
+ - `desired-state=unchanged`
3055
+ - `runtime=unchanged`
3056
+ - `focus=unchanged`
3057
+ - `cardinality=unchanged`
3058
+ - `domain-effect=null`
3059
+
3060
+ ```
3061
+ projmux profile list
2644
3062
  ```
2645
3063
 
2646
- ### `projmux persona edit`
3064
+ ### `projmux profile show`
2647
3065
 
2648
- Edit one persona in $EDITOR or $VISUAL, creating it when missing
3066
+ Print one profile's content exactly as stored
2649
3067
 
2650
3068
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2651
3069
 
@@ -2661,12 +3079,12 @@ Allowed effects:
2661
3079
  - `domain-effect=null`
2662
3080
 
2663
3081
  ```
2664
- projmux persona edit <name>
3082
+ projmux profile show <name>
2665
3083
  ```
2666
3084
 
2667
- ### `projmux persona set`
3085
+ ### `projmux profile set`
2668
3086
 
2669
- Write one persona from a file or stdin without an editor
3087
+ Validate one profile from a file or stdin and write it only when valid
2670
3088
 
2671
3089
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2672
3090
 
@@ -2682,12 +3100,12 @@ Allowed effects:
2682
3100
  - `domain-effect=null`
2683
3101
 
2684
3102
  ```
2685
- projmux persona set <name> [--file <path> | -]
3103
+ projmux profile set <name> [--file <path> | -]
2686
3104
  ```
2687
3105
 
2688
- ### `projmux persona delete`
3106
+ ### `projmux profile delete`
2689
3107
 
2690
- Delete one persona file; Agents already started with it keep their snapshot
3108
+ Delete one stored profile file
2691
3109
 
2692
3110
  Selectorless authority: `explicit-target` — the route or caller must name the exact target.
2693
3111
 
@@ -2703,7 +3121,7 @@ Allowed effects:
2703
3121
  - `domain-effect=null`
2704
3122
 
2705
3123
  ```
2706
- projmux persona delete <name> --yes
3124
+ projmux profile delete <name> --yes
2707
3125
  ```
2708
3126
 
2709
3127
  ## `projmux pin`
@@ -2724,7 +3142,12 @@ Allowed effects:
2724
3142
  - `domain-effect=null`
2725
3143
 
2726
3144
  ```
2727
- projmux pin project list|add|remove|toggle|clear
3145
+ projmux pin project list [--kind project|candidate]
3146
+ projmux pin project add <dir|uid:uid>
3147
+ projmux pin project remove <dir|uid:uid>
3148
+ projmux pin project toggle <dir|uid:uid>
3149
+ projmux pin project clear
3150
+ projmux pin project migrate [--dry-run]
2728
3151
  ```
2729
3152
 
2730
3153
  Subcommands:
@@ -2753,7 +3176,155 @@ Allowed effects:
2753
3176
  - `domain-effect=null`
2754
3177
 
2755
3178
  ```
2756
- projmux pin project list|add|remove|toggle|clear
3179
+ projmux pin project list [--kind project|candidate]
3180
+ projmux pin project add <dir|uid:uid>
3181
+ projmux pin project remove <dir|uid:uid>
3182
+ projmux pin project toggle <dir|uid:uid>
3183
+ projmux pin project clear
3184
+ projmux pin project migrate [--dry-run]
3185
+ ```
3186
+
3187
+ Pins are presentation preferences in two kinds:
3188
+ project a Registry Project uid; its root and name are projected from the Registry
3189
+ candidate a filesystem path that no Registry Project claims
3190
+
3191
+ Discovery roots (workdirs) are a separate collection; manage them in `projmux settings`.
3192
+
3193
+ Subcommands:
3194
+
3195
+ | Route | Summary |
3196
+ | --- | --- |
3197
+ | [`projmux pin project list`](#projmux-pin-project-list) | List every pin as a typed row, optionally limited to one pin kind |
3198
+ | [`projmux pin project add`](#projmux-pin-project-add) | Pin one project directory or Registry Project uid |
3199
+ | [`projmux pin project remove`](#projmux-pin-project-remove) | Unpin one project directory or Registry Project uid |
3200
+ | [`projmux pin project toggle`](#projmux-pin-project-toggle) | Pin or unpin one project directory or Registry Project uid |
3201
+ | [`projmux pin project clear`](#projmux-pin-project-clear) | Remove every pin |
3202
+ | [`projmux pin project migrate`](#projmux-pin-project-migrate) | Store the typed form of a legacy pin file, or report it with --dry-run |
3203
+
3204
+ #### `projmux pin project list`
3205
+
3206
+ List every pin as a typed row, optionally limited to one pin kind
3207
+
3208
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3209
+
3210
+ Allowed effects:
3211
+
3212
+ - `identity=unchanged`
3213
+ - `address=unchanged`
3214
+ - `topology=unchanged`
3215
+ - `desired-state=unchanged`
3216
+ - `runtime=unchanged`
3217
+ - `focus=unchanged`
3218
+ - `cardinality=unchanged`
3219
+ - `domain-effect=null`
3220
+
3221
+ ```
3222
+ projmux pin project list [--kind project|candidate]
3223
+ ```
3224
+
3225
+ #### `projmux pin project add`
3226
+
3227
+ Pin one project directory or Registry Project uid
3228
+
3229
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
3230
+
3231
+ Allowed effects:
3232
+
3233
+ - `identity=unchanged`
3234
+ - `address=unchanged`
3235
+ - `topology=unchanged`
3236
+ - `desired-state=unchanged`
3237
+ - `runtime=unchanged`
3238
+ - `focus=unchanged`
3239
+ - `cardinality=exact-one`
3240
+ - `domain-effect=null`
3241
+
3242
+ ```
3243
+ projmux pin project add <dir|uid:uid>
3244
+ ```
3245
+
3246
+ #### `projmux pin project remove`
3247
+
3248
+ Unpin one project directory or Registry Project uid
3249
+
3250
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
3251
+
3252
+ Allowed effects:
3253
+
3254
+ - `identity=unchanged`
3255
+ - `address=unchanged`
3256
+ - `topology=unchanged`
3257
+ - `desired-state=unchanged`
3258
+ - `runtime=unchanged`
3259
+ - `focus=unchanged`
3260
+ - `cardinality=exact-one`
3261
+ - `domain-effect=null`
3262
+
3263
+ ```
3264
+ projmux pin project remove <dir|uid:uid>
3265
+ ```
3266
+
3267
+ #### `projmux pin project toggle`
3268
+
3269
+ Pin or unpin one project directory or Registry Project uid
3270
+
3271
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
3272
+
3273
+ Allowed effects:
3274
+
3275
+ - `identity=unchanged`
3276
+ - `address=unchanged`
3277
+ - `topology=unchanged`
3278
+ - `desired-state=unchanged`
3279
+ - `runtime=unchanged`
3280
+ - `focus=unchanged`
3281
+ - `cardinality=exact-one`
3282
+ - `domain-effect=null`
3283
+
3284
+ ```
3285
+ projmux pin project toggle <dir|uid:uid>
3286
+ ```
3287
+
3288
+ #### `projmux pin project clear`
3289
+
3290
+ Remove every pin
3291
+
3292
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3293
+
3294
+ Allowed effects:
3295
+
3296
+ - `identity=unchanged`
3297
+ - `address=unchanged`
3298
+ - `topology=unchanged`
3299
+ - `desired-state=unchanged`
3300
+ - `runtime=unchanged`
3301
+ - `focus=unchanged`
3302
+ - `cardinality=zero-or-more`
3303
+ - `domain-effect=null`
3304
+
3305
+ ```
3306
+ projmux pin project clear
3307
+ ```
3308
+
3309
+ #### `projmux pin project migrate`
3310
+
3311
+ Store the typed form of a legacy pin file, or report it with --dry-run
3312
+
3313
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3314
+
3315
+ Allowed effects:
3316
+
3317
+ - `identity=unchanged`
3318
+ - `address=unchanged`
3319
+ - `topology=unchanged`
3320
+ - `desired-state=unchanged`
3321
+ - `runtime=unchanged`
3322
+ - `focus=unchanged`
3323
+ - `cardinality=zero-or-more`
3324
+ - `domain-effect=null`
3325
+
3326
+ ```
3327
+ projmux pin project migrate [--dry-run]
2757
3328
  ```
2758
3329
 
2759
3330
  ## `projmux prune`
@@ -2868,7 +3439,7 @@ Allowed effects:
2868
3439
  - `domain-effect=null`
2869
3440
 
2870
3441
  ```
2871
- projmux reconcile resources [--dry-run] [--materialize-project <name|uid:uid>] [--socket <name> | --socket-path <absolute>] [-o json]
3442
+ projmux reconcile resources [--dry-run] [--materialize-project <name|uid:uid>] [--import-orphan-mirrors] [--yes] [--socket <name> | --socket-path <absolute>] [-o json]
2872
3443
  projmux reconcile registry [--dry-run] [--source <name|absolute-path>] [--expect-source-checksum <sha256:hex>] [--expect-current-checksum <sha256:hex>] [--socket <name> | --socket-path <absolute>] [-o json]
2873
3444
  ```
2874
3445
 
@@ -2899,9 +3470,11 @@ Allowed effects:
2899
3470
  - `domain-effect=null`
2900
3471
 
2901
3472
  ```
2902
- projmux reconcile resources [--dry-run] [--materialize-project <name|uid:uid>] [--socket <name> | --socket-path <absolute>] [-o json]
3473
+ projmux reconcile resources [--dry-run] [--materialize-project <name|uid:uid>] [--import-orphan-mirrors] [--yes] [--socket <name> | --socket-path <absolute>] [-o json]
2903
3474
  ```
2904
3475
 
3476
+ Output modes (`-o`): `json`
3477
+
2905
3478
  ### `projmux reconcile registry`
2906
3479
 
2907
3480
  Plan Registry state-loss recovery with zero writes, then restore one explicitly named verified source
@@ -2923,6 +3496,8 @@ Allowed effects:
2923
3496
  projmux reconcile registry [--dry-run] [--source <name|absolute-path>] [--expect-source-checksum <sha256:hex>] [--expect-current-checksum <sha256:hex>] [--socket <name> | --socket-path <absolute>] [-o json]
2924
3497
  ```
2925
3498
 
3499
+ Output modes (`-o`): `json`
3500
+
2926
3501
  ## `projmux rebind`
2927
3502
 
2928
3503
  Rebind a Project to a new absolute root without moving files
@@ -2941,7 +3516,7 @@ Allowed effects:
2941
3516
  - `domain-effect=null`
2942
3517
 
2943
3518
  ```
2944
- projmux rebind project [<ref>] [--project <ref> | -p <ref>] --root <absolute-path>
3519
+ projmux rebind project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... --root <absolute-path>
2945
3520
  ```
2946
3521
 
2947
3522
  Subcommands:
@@ -2970,7 +3545,7 @@ Allowed effects:
2970
3545
  - `domain-effect=null`
2971
3546
 
2972
3547
  ```
2973
- projmux rebind project [<ref>] [--project <ref> | -p <ref>] --root <absolute-path>
3548
+ projmux rebind project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... --root <absolute-path>
2974
3549
  ```
2975
3550
 
2976
3551
  ## `projmux rename`
@@ -2991,10 +3566,10 @@ Allowed effects:
2991
3566
  - `domain-effect=null`
2992
3567
 
2993
3568
  ```
2994
- projmux rename project [<ref>] [--project <ref> | -p <ref>] --name <name>
2995
- projmux rename window [<ref>] --name <name> [--project <ref> | -p <ref>]
2996
- projmux rename pane [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
2997
- projmux rename agent [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
3569
+ projmux rename project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... --name <name> [-o <mode>]
3570
+ projmux rename window [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
3571
+ projmux rename pane [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
3572
+ projmux rename agent [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
2998
3573
  ```
2999
3574
 
3000
3575
  Subcommands:
@@ -3026,7 +3601,7 @@ Allowed effects:
3026
3601
  - `domain-effect=null`
3027
3602
 
3028
3603
  ```
3029
- projmux rename project [<ref>] [--project <ref> | -p <ref>] --name <name>
3604
+ projmux rename project [<ref>] [--project <ref> | -p <ref>] [--selector key=value]... --name <name> [-o <mode>]
3030
3605
  ```
3031
3606
 
3032
3607
  Aliases: `projects`
@@ -3051,7 +3626,7 @@ Allowed effects:
3051
3626
  - `domain-effect=null`
3052
3627
 
3053
3628
  ```
3054
- projmux rename window [<ref>] --name <name> [--project <ref> | -p <ref>]
3629
+ projmux rename window [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
3055
3630
  ```
3056
3631
 
3057
3632
  Aliases: `windows`
@@ -3076,7 +3651,7 @@ Allowed effects:
3076
3651
  - `domain-effect=null`
3077
3652
 
3078
3653
  ```
3079
- projmux rename pane [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
3654
+ projmux rename pane [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--pane <ref>]... [--selector key=value]... [-o <mode>]
3080
3655
  ```
3081
3656
 
3082
3657
  Aliases: `panes`
@@ -3101,7 +3676,7 @@ Allowed effects:
3101
3676
  - `domain-effect=null`
3102
3677
 
3103
3678
  ```
3104
- projmux rename agent [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]...
3679
+ projmux rename agent [<ref>] --name <name> [--project <ref> | -p <ref>] [--window <ref> | -w <ref>]... [--selector key=value]... [-o <mode>]
3105
3680
  ```
3106
3681
 
3107
3682
  Aliases: `agents`
@@ -3147,12 +3722,14 @@ Allowed effects:
3147
3722
  - `domain-effect=null`
3148
3723
 
3149
3724
  ```
3150
- projmux runtime sessions [--ui=popup|sidebar]
3151
- projmux runtime diagnostics [--socket <name> | --socket-path <absolute>] [--ui=popup|sidebar]
3152
- projmux runtime attach [--keep=N] [--fallback=home|ephemeral]
3725
+ projmux runtime sessions [--ui popup|sidebar]
3726
+ projmux runtime diagnostics [--socket <name> | --socket-path <absolute>] [--ui popup|sidebar]
3727
+ projmux runtime attach [--keep <n>] [--fallback home|ephemeral]
3153
3728
  projmux runtime stop [<session>...]
3154
- projmux runtime tag list|toggle|clear
3155
- projmux runtime prune [--keep=N]
3729
+ projmux runtime tag list
3730
+ projmux runtime tag clear
3731
+ projmux runtime tag toggle <name>
3732
+ projmux runtime prune [--keep <n>]
3156
3733
  ```
3157
3734
 
3158
3735
  Subcommands:
@@ -3186,7 +3763,7 @@ Allowed effects:
3186
3763
  - `domain-effect=null`
3187
3764
 
3188
3765
  ```
3189
- projmux runtime sessions
3766
+ projmux runtime sessions [--ui popup|sidebar]
3190
3767
  ```
3191
3768
 
3192
3769
  ### `projmux runtime diagnostics`
@@ -3207,7 +3784,7 @@ Allowed effects:
3207
3784
  - `domain-effect=null`
3208
3785
 
3209
3786
  ```
3210
- projmux runtime diagnostics [--socket <name> | --socket-path <absolute>] [--ui=popup|sidebar]
3787
+ projmux runtime diagnostics [--socket <name> | --socket-path <absolute>] [--ui popup|sidebar]
3211
3788
  ```
3212
3789
 
3213
3790
  ### `projmux runtime attach`
@@ -3228,7 +3805,7 @@ Allowed effects:
3228
3805
  - `domain-effect=null`
3229
3806
 
3230
3807
  ```
3231
- projmux runtime attach
3808
+ projmux runtime attach [--keep <n>] [--fallback home|ephemeral]
3232
3809
  ```
3233
3810
 
3234
3811
  ### `projmux runtime stop`
@@ -3249,7 +3826,7 @@ Allowed effects:
3249
3826
  - `domain-effect=null`
3250
3827
 
3251
3828
  ```
3252
- projmux runtime stop
3829
+ projmux runtime stop [<session>...]
3253
3830
  ```
3254
3831
 
3255
3832
  ### `projmux runtime tag`
@@ -3270,7 +3847,80 @@ Allowed effects:
3270
3847
  - `domain-effect=null`
3271
3848
 
3272
3849
  ```
3273
- projmux runtime tag
3850
+ projmux runtime tag list
3851
+ projmux runtime tag clear
3852
+ projmux runtime tag toggle <name>
3853
+ ```
3854
+
3855
+ Subcommands:
3856
+
3857
+ | Route | Summary |
3858
+ | --- | --- |
3859
+ | [`projmux runtime tag list`](#projmux-runtime-tag-list) | Print the tagged session names, one per line |
3860
+ | [`projmux runtime tag clear`](#projmux-runtime-tag-clear) | Clear the whole tagged session selection |
3861
+ | [`projmux runtime tag toggle`](#projmux-runtime-tag-toggle) | Tag or untag one tmux session name |
3862
+
3863
+ #### `projmux runtime tag list`
3864
+
3865
+ Print the tagged session names, one per line
3866
+
3867
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3868
+
3869
+ Allowed effects:
3870
+
3871
+ - `identity=unchanged`
3872
+ - `address=unchanged`
3873
+ - `topology=unchanged`
3874
+ - `desired-state=unchanged`
3875
+ - `runtime=unchanged`
3876
+ - `focus=unchanged`
3877
+ - `cardinality=unchanged`
3878
+ - `domain-effect=null`
3879
+
3880
+ ```
3881
+ projmux runtime tag list
3882
+ ```
3883
+
3884
+ #### `projmux runtime tag clear`
3885
+
3886
+ Clear the whole tagged session selection
3887
+
3888
+ Selectorless authority: `explicit-fan-out` — the route spelling is an intentional global or whole-set opt-in.
3889
+
3890
+ Allowed effects:
3891
+
3892
+ - `identity=unchanged`
3893
+ - `address=unchanged`
3894
+ - `topology=unchanged`
3895
+ - `desired-state=unchanged`
3896
+ - `runtime=unchanged`
3897
+ - `focus=unchanged`
3898
+ - `cardinality=zero-or-more`
3899
+ - `domain-effect=null`
3900
+
3901
+ ```
3902
+ projmux runtime tag clear
3903
+ ```
3904
+
3905
+ #### `projmux runtime tag toggle`
3906
+
3907
+ Tag or untag one tmux session name
3908
+
3909
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
3910
+
3911
+ Allowed effects:
3912
+
3913
+ - `identity=unchanged`
3914
+ - `address=unchanged`
3915
+ - `topology=unchanged`
3916
+ - `desired-state=unchanged`
3917
+ - `runtime=unchanged`
3918
+ - `focus=unchanged`
3919
+ - `cardinality=exact-one`
3920
+ - `domain-effect=null`
3921
+
3922
+ ```
3923
+ projmux runtime tag toggle <name>
3274
3924
  ```
3275
3925
 
3276
3926
  ### `projmux runtime prune`
@@ -3291,7 +3941,7 @@ Allowed effects:
3291
3941
  - `domain-effect=null`
3292
3942
 
3293
3943
  ```
3294
- projmux runtime prune
3944
+ projmux runtime prune [--keep <n>]
3295
3945
  ```
3296
3946
 
3297
3947
  ## `projmux settings`
@@ -3333,8 +3983,8 @@ Allowed effects:
3333
3983
  - `domain-effect=null`
3334
3984
 
3335
3985
  ```
3336
- projmux setup
3337
- projmux setup terminal [terminal] [--apply]
3986
+ projmux setup [--timeout <duration>] [--non-interactive]
3987
+ projmux setup terminal [terminal] [--apply] [--config <path>] [--allow-symlink]
3338
3988
  ```
3339
3989
 
3340
3990
  Subcommands:
@@ -3384,7 +4034,7 @@ Allowed effects:
3384
4034
  - `domain-effect=null`
3385
4035
 
3386
4036
  ```
3387
- projmux shell [--session <name>]
4037
+ projmux shell [--session <name>] [--socket <name>] [--config <path>] [--bin <path>] [--no-install]
3388
4038
  ```
3389
4039
 
3390
4040
  ## `projmux start`
@@ -3509,7 +4159,246 @@ Allowed effects:
3509
4159
  - `domain-effect=null`
3510
4160
 
3511
4161
  ```
3512
- projmux switch [<project>]
4162
+ projmux switch [--ui popup|sidebar] [--anchor <pane>]
4163
+ projmux switch open <path>
4164
+ projmux switch toggle-tag [path]
4165
+ projmux switch toggle-pin [path]
4166
+ projmux switch kill [path]
4167
+ projmux switch preview [--ui popup|sidebar] [path]
4168
+ projmux switch settings
4169
+ projmux switch cycle-pane <path> <next|prev>
4170
+ projmux switch cycle-window <path> <next|prev>
4171
+ projmux switch sidebar-focus <path>
4172
+ projmux switch sidebar-open --path <path> --anchor <pane> [--session <name>] [--mode <mode>] [--query <text>] [--client <client>]
4173
+ ```
4174
+
4175
+ Subcommands:
4176
+
4177
+ | Route | Summary |
4178
+ | --- | --- |
4179
+ | [`projmux switch open`](#projmux-switch-open) | Open the project at a path the way the picker opens a selected row |
4180
+ | [`projmux switch toggle-tag`](#projmux-switch-toggle-tag) | Toggle the picker tag on a project path; no path means the current directory |
4181
+ | [`projmux switch toggle-pin`](#projmux-switch-toggle-pin) | Toggle the pin on a project path; no path means the current directory |
4182
+ | [`projmux switch kill`](#projmux-switch-kill) | Stop the tmux session of a project path; no path means the current directory |
4183
+ | [`projmux switch preview`](#projmux-switch-preview) | Render the picker preview of a project path; no path means the current directory |
4184
+ | [`projmux switch settings`](#projmux-switch-settings) | Open the picker's pin settings menu |
4185
+ | [`projmux switch cycle-pane`](#projmux-switch-cycle-pane) | Advance the picker preview pane cursor of a project path |
4186
+ | [`projmux switch cycle-window`](#projmux-switch-cycle-window) | Advance the picker preview window cursor of a project path |
4187
+ | [`projmux switch sidebar-focus`](#projmux-switch-sidebar-focus) | Move the client to the live session of a project path; a path with no live session does nothing |
4188
+ | [`projmux switch sidebar-open`](#projmux-switch-sidebar-open) | Open a project the sidebar selected, anchored on an exact tmux Pane |
4189
+
4190
+ Canonical spelling: `projmux create project`, `projmux open project`
4191
+
4192
+ ### `projmux switch open`
4193
+
4194
+ Open the project at a path the way the picker opens a selected row
4195
+
4196
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
4197
+
4198
+ Allowed effects:
4199
+
4200
+ - `identity=unchanged|created|reused|replaced`
4201
+ - `address=unchanged|allocated|released`
4202
+ - `topology=unchanged|established|replaced`
4203
+ - `desired-state=unchanged|created|reused|replaced`
4204
+ - `runtime=unchanged|materialized|already-live`
4205
+ - `focus=unchanged|moved-current-client|attached-caller`
4206
+ - `cardinality=unchanged|exact-one`
4207
+ - `domain-effect=null`
4208
+
4209
+ ```
4210
+ projmux switch open <path>
4211
+ ```
4212
+
4213
+ Canonical spelling: `projmux create project`, `projmux open project`
4214
+
4215
+ ### `projmux switch toggle-tag`
4216
+
4217
+ Toggle the picker tag on a project path; no path means the current directory
4218
+
4219
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
4220
+
4221
+ Allowed effects:
4222
+
4223
+ - `identity=unchanged`
4224
+ - `address=unchanged`
4225
+ - `topology=unchanged`
4226
+ - `desired-state=unchanged`
4227
+ - `runtime=unchanged`
4228
+ - `focus=unchanged`
4229
+ - `cardinality=exact-one`
4230
+ - `domain-effect=null`
4231
+
4232
+ ```
4233
+ projmux switch toggle-tag [path]
4234
+ ```
4235
+
4236
+ ### `projmux switch toggle-pin`
4237
+
4238
+ Toggle the pin on a project path; no path means the current directory
4239
+
4240
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
4241
+
4242
+ Allowed effects:
4243
+
4244
+ - `identity=unchanged`
4245
+ - `address=unchanged`
4246
+ - `topology=unchanged`
4247
+ - `desired-state=unchanged`
4248
+ - `runtime=unchanged`
4249
+ - `focus=unchanged`
4250
+ - `cardinality=exact-one`
4251
+ - `domain-effect=null`
4252
+
4253
+ ```
4254
+ projmux switch toggle-pin [path]
4255
+ ```
4256
+
4257
+ ### `projmux switch kill`
4258
+
4259
+ Stop the tmux session of a project path; no path means the current directory
4260
+
4261
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
4262
+
4263
+ Allowed effects:
4264
+
4265
+ - `identity=unchanged`
4266
+ - `address=unchanged`
4267
+ - `topology=unchanged`
4268
+ - `desired-state=unchanged`
4269
+ - `runtime=unchanged|stopped`
4270
+ - `focus=unchanged|moved-current-client`
4271
+ - `cardinality=unchanged|exact-one`
4272
+ - `domain-effect=null`
4273
+
4274
+ ```
4275
+ projmux switch kill [path]
4276
+ ```
4277
+
4278
+ ### `projmux switch preview`
4279
+
4280
+ Render the picker preview of a project path; no path means the current directory
4281
+
4282
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
4283
+
4284
+ Allowed effects:
4285
+
4286
+ - `identity=unchanged`
4287
+ - `address=unchanged`
4288
+ - `topology=unchanged`
4289
+ - `desired-state=unchanged`
4290
+ - `runtime=unchanged`
4291
+ - `focus=unchanged`
4292
+ - `cardinality=unchanged`
4293
+ - `domain-effect=null`
4294
+
4295
+ ```
4296
+ projmux switch preview [--ui popup|sidebar] [path]
4297
+ ```
4298
+
4299
+ ### `projmux switch settings`
4300
+
4301
+ Open the picker's pin settings menu
4302
+
4303
+ Selectorless authority: `natural-omitted` — omission resolves one predictable current resource or documented contextual read/scope; any selector replaces it.
4304
+
4305
+ Allowed effects:
4306
+
4307
+ - `identity=unchanged`
4308
+ - `address=unchanged`
4309
+ - `topology=unchanged`
4310
+ - `desired-state=unchanged`
4311
+ - `runtime=unchanged`
4312
+ - `focus=unchanged`
4313
+ - `cardinality=unchanged`
4314
+ - `domain-effect=null`
4315
+
4316
+ ```
4317
+ projmux switch settings
4318
+ ```
4319
+
4320
+ ### `projmux switch cycle-pane`
4321
+
4322
+ Advance the picker preview pane cursor of a project path
4323
+
4324
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
4325
+
4326
+ Allowed effects:
4327
+
4328
+ - `identity=unchanged`
4329
+ - `address=unchanged`
4330
+ - `topology=unchanged`
4331
+ - `desired-state=unchanged`
4332
+ - `runtime=unchanged`
4333
+ - `focus=unchanged`
4334
+ - `cardinality=unchanged`
4335
+ - `domain-effect=null`
4336
+
4337
+ ```
4338
+ projmux switch cycle-pane <path> <next|prev>
4339
+ ```
4340
+
4341
+ ### `projmux switch cycle-window`
4342
+
4343
+ Advance the picker preview window cursor of a project path
4344
+
4345
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
4346
+
4347
+ Allowed effects:
4348
+
4349
+ - `identity=unchanged`
4350
+ - `address=unchanged`
4351
+ - `topology=unchanged`
4352
+ - `desired-state=unchanged`
4353
+ - `runtime=unchanged`
4354
+ - `focus=unchanged`
4355
+ - `cardinality=unchanged`
4356
+ - `domain-effect=null`
4357
+
4358
+ ```
4359
+ projmux switch cycle-window <path> <next|prev>
4360
+ ```
4361
+
4362
+ ### `projmux switch sidebar-focus`
4363
+
4364
+ Move the client to the live session of a project path; a path with no live session does nothing
4365
+
4366
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
4367
+
4368
+ Allowed effects:
4369
+
4370
+ - `identity=unchanged`
4371
+ - `address=unchanged`
4372
+ - `topology=unchanged`
4373
+ - `desired-state=unchanged`
4374
+ - `runtime=unchanged`
4375
+ - `focus=unchanged|moved-current-client`
4376
+ - `cardinality=unchanged|exact-one`
4377
+ - `domain-effect=null`
4378
+
4379
+ ```
4380
+ projmux switch sidebar-focus <path>
4381
+ ```
4382
+
4383
+ ### `projmux switch sidebar-open`
4384
+
4385
+ Open a project the sidebar selected, anchored on an exact tmux Pane
4386
+
4387
+ Selectorless authority: `explicit-target` — the route or caller must name the exact target.
4388
+
4389
+ Allowed effects:
4390
+
4391
+ - `identity=unchanged|created|reused|replaced`
4392
+ - `address=unchanged|allocated|released`
4393
+ - `topology=unchanged|established|replaced`
4394
+ - `desired-state=unchanged|created|reused|replaced`
4395
+ - `runtime=unchanged|materialized|already-live`
4396
+ - `focus=unchanged|moved-current-client|attached-caller`
4397
+ - `cardinality=unchanged|exact-one`
4398
+ - `domain-effect=null`
4399
+
4400
+ ```
4401
+ projmux switch sidebar-open --path <path> --anchor <pane> [--session <name>] [--mode <mode>] [--query <text>] [--client <client>]
3513
4402
  ```
3514
4403
 
3515
4404
  Canonical spelling: `projmux create project`, `projmux open project`
@@ -3532,7 +4421,7 @@ Allowed effects:
3532
4421
  - `domain-effect=null`
3533
4422
 
3534
4423
  ```
3535
- projmux unregister project [<ref>...] [--selector key=value]... [--all] [--dry-run] [--yes]
4424
+ projmux unregister project [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
3536
4425
  ```
3537
4426
 
3538
4427
  Subcommands:
@@ -3561,7 +4450,7 @@ Allowed effects:
3561
4450
  - `domain-effect=null`
3562
4451
 
3563
4452
  ```
3564
- projmux unregister project [<ref>...] [--selector key=value]... [--all] [--dry-run] [--yes]
4453
+ projmux unregister project [<ref>...] [--project <ref> | -p <ref>] [--selector key=value]... [--all] [--socket <name> | --socket-path <absolute>] [--dry-run] [--yes]
3565
4454
  ```
3566
4455
 
3567
4456
  Aliases: `projects`
@@ -3584,7 +4473,9 @@ Allowed effects:
3584
4473
  - `domain-effect=null`
3585
4474
 
3586
4475
  ```
3587
- projmux update status|check|apply
4476
+ projmux update status [--json]
4477
+ projmux update check [--json]
4478
+ projmux update apply [--dry-run] [--no-apply]
3588
4479
  ```
3589
4480
 
3590
4481
  Subcommands:
@@ -3615,7 +4506,7 @@ Allowed effects:
3615
4506
  - `domain-effect=null`
3616
4507
 
3617
4508
  ```
3618
- projmux update status
4509
+ projmux update status [--json]
3619
4510
  ```
3620
4511
 
3621
4512
  ### `projmux update check`
@@ -3636,7 +4527,7 @@ Allowed effects:
3636
4527
  - `domain-effect=null`
3637
4528
 
3638
4529
  ```
3639
- projmux update check
4530
+ projmux update check [--json]
3640
4531
  ```
3641
4532
 
3642
4533
  ### `projmux update apply`
@@ -3657,7 +4548,7 @@ Allowed effects:
3657
4548
  - `domain-effect=null`
3658
4549
 
3659
4550
  ```
3660
- projmux update apply
4551
+ projmux update apply [--dry-run] [--no-apply]
3661
4552
  ```
3662
4553
 
3663
4554
  ## `projmux welcome`
@@ -3699,7 +4590,8 @@ Allowed effects:
3699
4590
  - `domain-effect=null`
3700
4591
 
3701
4592
  ```
3702
- projmux window record|recent
4593
+ projmux window record
4594
+ projmux window recent
3703
4595
  ```
3704
4596
 
3705
4597
  Subcommands: