SessionPermissionProfileChangedParams
Experimental
session/permissionProfileChanged params:
the fold of the durable profile-commit audit fact — fired on every accepted
POST-EPOCH-ONE profile commit, never for a mode-only change (that writes no
such fact and keeps folding session/approvalModeChanged from its own
reconfigure fact) and never for a reviewer-attachment change. It folds on EVERY
PermissionProfileCommittedV1 EXCEPT the epoch-one initialization fact and
fork/child derivation facts — their causes (newSessionDefault, launchCli
at start, fork, childSpawn, legacyInitialization, launchOverrides)
are unreachable on the wire until a later commit carries them — so an
omitted-profile start and an empty-cut fork fold nothing and their
""-cursor rules hold byte-for-byte. A held id recommitting
under a changed definition or an managed refresh folds too (the
profileId may equal the prior), exactly as the approvalMode precedent folds
per accepted change. The session/approvalModeChanged member pattern with
profileId in place of mode; additive-optional under (clients
predating it skip the unknown method); subscription-gated as view events
are.
Fields and variants
Section titled “Fields and variants”clientName— ExperimentalcommandId— ExperimentalprofileId— ExperimentalsessionId— Experimentalsource— ExperimentalsourceRange— ExperimentalviewCursor— Experimental
Source
schema/msp/experimental/msp.schema.json#/types/SessionPermissionProfileChangedParams
{ "description": "`session/permissionProfileChanged` params:\nthe fold of the durable profile-commit audit fact — fired on every accepted\nPOST-EPOCH-ONE profile commit, never for a mode-only change (that writes no\nsuch fact and keeps folding `session/approvalModeChanged` from its own\nreconfigure fact) and never for a reviewer-attachment change. It folds on EVERY\n`PermissionProfileCommittedV1` EXCEPT the epoch-one initialization fact and\nfork/child derivation facts — their causes (`newSessionDefault`, `launchCli`\nat start, `fork`, `childSpawn`, `legacyInitialization`, `launchOverrides`)\nare unreachable on the wire until a later commit carries them — so an\nomitted-profile start and an empty-cut fork fold nothing and their\n`\"\"`-cursor rules hold byte-for-byte. A held id recommitting\nunder a changed definition or an managed refresh folds too (the\n`profileId` may equal the prior), exactly as the approvalMode precedent folds\nper accepted change. The `session/approvalModeChanged` member pattern with\n`profileId` in place of `mode`; additive-optional under (clients\npredating it skip the unknown method); subscription-gated as view events\nare.", "properties": { "clientName": { "description": "The requesting client's `clientInfo.name`, read from the\ncommitted fact's durable `PermissionCommandLinkV1.client_name` seat.\n`null` when no client recorded the change: the Initialization/\nManagedRefresh causes, native picker commits, and facts written before\nthe seat existed.", "type": [ "string", "null" ] }, "commandId": { "description": "The command that changed it; `null` on an Initialization- or\nManagedRefresh-kind fold that no accepted command produced (only the\n`livePicker`/`resumeCli` causes carry it — the `lastCommandId: null`\nprecedent).", "type": [ "string", "null" ] }, "profileId": { "description": "The profile now in effect; `null` when the committed source is a launch\noverride (`LaunchOverrides` pins `id: None`) — 's served-site rule.", "type": [ "string", "null" ] }, "sessionId": { "description": "The owning session.", "type": "string" }, "source": { "$ref": "#/$defs/PermissionProfileSource", "description": "How the profile took effect." }, "sourceRange": { "$ref": "#/$defs/SourceRange", "description": "The durable records this event folded from." }, "viewCursor": { "description": "Opaque, strictly monotonic view cursor.", "type": "string" } }, "required": [ "clientName", "commandId", "profileId", "sessionId", "source", "sourceRange", "viewCursor" ], "type": "object", "x-msp-descriptor": "session/permissionProfileChanged", "x-msp-stability": "experimental"}