## Permission belongs to an operation\,&#32;a revision\,&#32;and a lifetime

A tool can be enabled without its domain action being authorized\.&#32;A human can approve a local edit without approving publication\.&#32;A new session can reuse an extension closure without inheriting the same kind of persisted permission as another example\.

The Extension part makes these distinctions concrete\.&#32;Continuity explains why they remain important when the active conversation moves\,&#32;and Tan explains why Main’s protections cannot simply be presumed to follow another runtime\.&#32;The Permissions part adds the operator’s resolution path\:&#32;which declaration\,&#32;effective policy key\,&#32;mode\,&#32;and UI capability govern this particular call\?

The title’s operation\/revision\/lifetime discipline is a design principle\,&#32;not a claim that the generic tool\-approval dialog implements every domain revision check\.&#32;Its binary answer admits one call\;&#32;the domain must still validate its own object and authority\.

### Compare the examples without flattening their policies

| Example | State and authority lifetime | Consequence |
| --- | --- | --- |
| Seed Desk reservations | Reservations and&#32;`agentEnabled`&#32;are persisted in branch snapshots\.&#32;Revision combines session identity and the latest relevant state\-entry ID\. | Ancestor grants can be inherited\.&#32;A headless reopen can retain an existing grant\;&#32;both human grant and revoke commands require UI in this supplied stage\. |
| Review Desk | Draft state is reconstructed from branch entries\.&#32;The one\-action grant is in memory\,&#32;tied to session identity and numeric revision\. | A successful mutation consumes the grant\.&#32;Navigation\,&#32;revocation\,&#32;and shutdown invalidate authority and retire pending dialogs\. |
| Field Notes | Selection is local to the factory binding and is not persisted in the journal\. | `/new`&#32;and session switching can keep the selection\;&#32;a fresh binding starts without it\. |
| Memory and skills | Retained evidence and procedural guidance have their own storage and discovery scope\. | Retrieved prose does not grant a tool permission or establish that a procedure was executed\. |

Even the persisted\-data validation policies differ\.&#32;Seed Desk refuses malformed matching snapshots rather than skipping them\.&#32;Review Desk’s small fixture skips entries that fail its state predicate\.&#32;Preserve that distinction when studying recovery\;&#32;the examples do not define one universal corruption policy\.

### Resolve host approval without inventing a domain grant

[Approval Desk\:&#32;modes and policies](<https://present-sketch-tp94.here.now/chapters/permissions-approval-desk-modes-and-policies>)&#32;establishes a precise order\.&#32;Tool deny and effective user deny are checked before automatic mode admission\.&#32;Explicit tool allow or prompt can outrank a non\-deny user policy\.&#32;An override\-only prompt is not an unbypassable policy in yolo\.&#32;Consequently\,&#32;neither “the user record always wins” nor “yolo disables every gate” is an accurate summary\.

[Dispatch Desk](<https://present-sketch-tp94.here.now/chapters/permissions-dispatch-desk-device-and-path-gates>)&#32;adds policy identity\.&#32;A valid device policy replaces the invoking&#32;`write`&#32;fallback\;&#32;it is not an intersection with every policy in the record\.&#32;The outer transport borrows a tier\,&#32;while an applicable inner wrapper can still deny\.&#32;`xdevApproved`&#32;suppresses a particular unchanged\-input duplicate prompt\,&#32;not every nested check\.&#32;A supported input replacement can require reclassification\,&#32;and the source predicate is not a universal content\-revision guard\.

The generic&#32;[one\-call boundary](<https://present-sketch-tp94.here.now/chapters/permissions-boundary-desk-one-call-at-a-time>)&#32;offers Approve and Deny only\.&#32;Dismissal is not approval\,&#32;and an approval does not persist an allow\-for\-session setting\.&#32;Two questions at outer and inner device gates can still precede only one execution\.&#32;None of those answers creates Seed Desk’s branch grant or Review Desk’s revision\-bound one\-action authority\.

### Authority and concurrency are separate checks

Seed Desk re\-reads its revision after awaiting human confirmation\.&#32;Review Desk uses generation invalidation to prevent an old dialog answer from reviving authority\.&#32;Both respond to the same asynchronous hazard\:&#32;the context that made a decision meaningful may have changed while the UI was waiting\.

A current revision does not supply permission\,&#32;and permission does not make an old revision current\.&#32;On a stale refusal\,&#32;inspect again and reconsider the action\;&#32;do not merely substitute a newer token into an unchanged request\.

These revisions are domain\-specific\.&#32;Seed Desk’s token\,&#32;Review Desk’s counter\,&#32;a workbook page revision\,&#32;and a provider\-facing session ID are not interchangeable concurrency controls\.&#32;The generic wrapper’s supported pre\-approval input replacement and Review Desk’s pending\-dialog generation invalidation also remain different mechanisms\.

### UI\,&#32;launch\,&#32;and child construction are distinct boundaries

[When the host can ask](<https://present-sketch-tp94.here.now/chapters/permissions-boundary-desk-when-the-host-can-ask>)&#32;separates terminal presence from an installed UI adapter\.&#32;RPC can provide select requests through its transport\.&#32;ACP form support is capability\-dependent\,&#32;and a non\-no\-op adapter can still return an unavailable value for a particular operation\.&#32;Print\/no\-UI execution fails closed when this generic gate requires a prompt\.&#32;None of those statements proves physical keyboard behavior or every native component\.

[Configuration and launch precedence](<https://present-sketch-tp94.here.now/chapters/permissions-configuration-and-launch-precedence>)&#32;explains why a displayed always\-ask setting can coexist with wrapper yolo\:&#32;the execute\-time autoApprove boolean can outrank the configured mode\.&#32;This does not remove an effective explicit deny or acknowledge pending provider safety checks\.

[Subagents and inherited policies](<https://present-sketch-tp94.here.now/chapters/permissions-subagents-and-inherited-policies>)&#32;traces both Task construction and&#32;`TanCommandController.start()`&#32;to&#32;`createSubagentSettings()`\.&#32;The helper defaults child mode to yolo while retaining per\-tool policy values\,&#32;and explicit helper overrides are applied afterward\.&#32;Initial construction\,&#32;later live runtime inputs\,&#32;and conversation ancestry are not one inheritance contract\.&#32;No universal live synchronization or safeguard clone is established\.

### Reload is not a universal revocation boundary

The source’s&#32;`AgentSession.reload()`&#32;reopens the current session through&#32;`switchSession()`\.&#32;It does not establish that every extension factory is imported and rebound\.&#32;Review Desk uses the switch path to invalidate its authority\.&#32;Field Notes deliberately retains its factory\-local selection\.

Therefore neither “reload clears everything” nor “reload preserves everything” is a sound rule\.&#32;State the intended lifetime\,&#32;implement its transitions\,&#32;and test those transitions through the actual host\.&#32;Restarting the explicit launch is the source workbook’s reliable procedure for testing extension code edits\,&#32;not a claim that every hot\-reload route is equivalent\.

### Give the agent an interface\,&#32;not implied authority

A model\-required capability needs a supported tool\,&#32;not a suggestion to invoke a human slash command\.&#32;Humans and tools should share mandatory domain rules when both can reach the same action\.&#32;A human command path is not cryptographic proof of a human keystroke\:&#32;SDK and RPC hosts can deliberately dispatch command text\.

Host approval controls execution under the host’s policy\.&#32;Domain grants control the example’s operation\.&#32;Pending provider safety acknowledgement is another gate\.&#32;Operating\-system and broker policy control a different boundary\.&#32;The supplied&#32;`isProjectTrusted()`&#32;compatibility method and trusted\-file selection do not sandbox arbitrary extension JavaScript or its imports\.

This matters especially for unattended tangents and permission\-denied file fallbacks\.&#32;Verify the actual subagent settings and installed safeguards rather than assuming Main’s experience follows it\.&#32;A fallback adapter must refuse the wrong session or destination and rely on a real broker\;&#32;returning success before the exact write has completed is not permission\-aware behavior\.&#32;That is a host\-design contract\,&#32;not a request to use a privileged broker for this workbook\.&#32;[Approval is not a sandbox](<https://present-sketch-tp94.here.now/chapters/permissions-approval-is-not-a-sandbox>)&#32;preserves the distinction between application admission\,&#32;a denied primitive\,&#32;and a verified effect\.

**Source trail\:**&#32;[Seed Desk reservations](<https://present-sketch-tp94.here.now/chapters/extensions-seed-desk-reservations-on-the-active-branch>)\,&#32;[Review Desk](<https://present-sketch-tp94.here.now/chapters/extensions-review-desk-edit-and-decide-locally>)\,&#32;[Discovery\,&#32;installation and reload](<https://present-sketch-tp94.here.now/chapters/extensions-discovery-installation-and-reload>)\,&#32;and&#32;[File fallbacks](<https://present-sketch-tp94.here.now/chapters/extensions-permission-denied-file-fallbacks>)\.&#32;Supplied examples include&#32;`examples/seed-desk/03-reservations/desk.ts`&#32;—&#32;`reconstruct`\,&#32;`changeReservation`\;&#32;`examples/review-desk/index.ts`&#32;—&#32;`stateFor`\,&#32;`invalidateAuthority`\;&#32;and&#32;`examples/package-lab/multi/index.ts`&#32;— the factory\-local&#32;`selected`&#32;variable\.&#32;New permissions anchors include&#32;`packages/coding-agent/src/tools/approval.ts`&#32;—&#32;`resolveApproval`\;&#32;`extensibility/extensions/wrapper.ts`&#32;—&#32;`ExtensionToolWrapper.execute`\;&#32;`modes/rpc/rpc-mode.ts`&#32;—&#32;`runRpcMode`\;&#32;and&#32;`task/executor.ts`&#32;—&#32;`createSubagentSettings`\,&#32;with the latter abbreviated paths relative to&#32;`packages/coding-agent/src/`\.&#32;Their recorded checks remain scoped in&#32;[Permissions evidence](<https://present-sketch-tp94.here.now/chapters/permissions-evidence-and-limitations>)\.

Related chapters\:

- [Prepare a reversible lab](<https://present-sketch-tp94.here.now/chapters/extensions-prepare-a-reversible-lab>)
- [Seed Desk\:&#32;reservations on the active branch](<https://present-sketch-tp94.here.now/chapters/extensions-seed-desk-reservations-on-the-active-branch>)
- [Review Desk\:&#32;edit and decide locally](<https://present-sketch-tp94.here.now/chapters/extensions-review-desk-edit-and-decide-locally>)
- [Package Lab\:&#32;one file to an embedded host](<https://present-sketch-tp94.here.now/chapters/extensions-package-lab-one-file-to-an-embedded-host>)
- [Discovery\,&#32;installation and reload](<https://present-sketch-tp94.here.now/chapters/extensions-discovery-installation-and-reload>)
- [Tools\,&#32;interception and native delegation](<https://present-sketch-tp94.here.now/chapters/extensions-tools-interception-and-native-delegation>)
- [Permission\-denied file fallbacks](<https://present-sketch-tp94.here.now/chapters/extensions-permission-denied-file-fallbacks>)
- [Decision Desk refusals and failures](<https://present-sketch-tp94.here.now/chapters/continuity-decision-desk-refusals-and-failures>)
- [2\.&#32;Start from Main](<https://present-sketch-tp94.here.now/chapters/tan-2-start-from-main>)
- [Four places knowledge can live](<https://present-sketch-tp94.here.now/chapters/memory-four-places-knowledge-can-live>)
- [Approval Desk\:&#32;modes and policies](<https://present-sketch-tp94.here.now/chapters/permissions-approval-desk-modes-and-policies>)
- [Dispatch Desk\:&#32;device and path gates](<https://present-sketch-tp94.here.now/chapters/permissions-dispatch-desk-device-and-path-gates>)
- [Boundary Desk\:&#32;one call at a time](<https://present-sketch-tp94.here.now/chapters/permissions-boundary-desk-one-call-at-a-time>)
- [Boundary Desk\:&#32;when the host can ask](<https://present-sketch-tp94.here.now/chapters/permissions-boundary-desk-when-the-host-can-ask>)
- [Configuration and launch precedence](<https://present-sketch-tp94.here.now/chapters/permissions-configuration-and-launch-precedence>)
- [Subagents and inherited policies](<https://present-sketch-tp94.here.now/chapters/permissions-subagents-and-inherited-policies>)
- [Approval is not a sandbox](<https://present-sketch-tp94.here.now/chapters/permissions-approval-is-not-a-sandbox>)
- [Recovery without widening permission](<https://present-sketch-tp94.here.now/chapters/permissions-recovery-without-widening-permission>)
