Skip to content

Rulvar API reference


Rulvar API reference / @rulvar/rulvar / AgentProfilePermissions

Interface: AgentProfilePermissions

Defined in: packages/core/dist/index.d.ts

Profile-level permissions. inheritPermissions governs SUBAGENT inheritance (mode c orchestrators, M6+): children get their own config only unless explicitly opted in. It is carried as data here and consumed by the spawning layers.

Extends

Properties

PropertyTypeDescriptionInherited fromDefined in
approvalDeadlineMs?numberOpt-in deadline for ask verdicts (RV1107): a suspended tool approval nobody resolves within this many milliseconds is DENIED by a journaled resolution by 'timeout' instead of waiting forever. The deadline is journaled ON the suspension entry, so it survives resume and re-arms from the entry, exactly like the flavor B escalation deadline; a racing live decision and the timeout can never both apply (first-closing-wins). A positive integer no larger than the deadline ceiling (one hundred years in milliseconds, RV1204), so now + interval always journals as a valid absolute date. Absent is the historical contract: the approval waits indefinitely.PermissionConfig.approvalDeadlineMspackages/core/dist/index.d.ts
ask?PermissionRule[]-PermissionConfig.askpackages/core/dist/index.d.ts
canUseTool?CanUseTool-PermissionConfig.canUseToolpackages/core/dist/index.d.ts
deny?PermissionRule[]-PermissionConfig.denypackages/core/dist/index.d.ts
hooks?PermissionHook[]-PermissionConfig.hookspackages/core/dist/index.d.ts
inheritPermissions?booleanDefault false.-packages/core/dist/index.d.ts
preset?"strict" | "standard" | "open"Compiles into deny/ask rules; ships in M5.-packages/core/dist/index.d.ts
strictApprovals?booleanOpt-in monotonic approval composition (RV1507, the eighteenth improvement plan). The chain's documented order lets a generic allow (a hook or canUseTool) clear a needsApproval: true tool, which is deliberate for tests and trusted hosts and a fail-open hazard for a platform profile. With this set, an ALLOW verdict from a hook or from canUseTool over a needsApproval tool falls through instead of deciding, so the terminal default still asks; deny and ask verdicts keep their power (tightening stays decisive), input modification still applies, and tools without the declaration keep the historical composition byte for byte. Merges monotonically across the engine and profile layers: either level arms it and a profile cannot loosen an engine-armed mode. A non-boolean value refuses at compile (the RV610 posture: a stray 'true' string must never silently disarm the mode it names).PermissionConfig.strictApprovalspackages/core/dist/index.d.ts