pi-daddy 0.18.0 → 0.18.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/CHANGELOG.md +18 -0
- package/dist/capabilities.d.ts +15 -0
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +47 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/delegate.d.ts.map +1 -1
- package/dist/delegate.js +2 -1
- package/dist/delegate.js.map +1 -1
- package/dist/propagation.d.ts.map +1 -1
- package/dist/propagation.js +2 -1
- package/dist/propagation.js.map +1 -1
- package/dist/refusals.d.ts +1 -1
- package/dist/refusals.d.ts.map +1 -1
- package/dist/refusals.js +1 -0
- package/dist/refusals.js.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +7 -1
- package/dist/resolve.js.map +1 -1
- package/package.json +1 -1
- package/src/capabilities.ts +53 -0
- package/src/delegate.ts +2 -1
- package/src/propagation.ts +2 -1
- package/src/refusals.ts +1 -0
- package/src/resolve.ts +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,24 @@ the record of how the package got here and are worth keeping; they are not worth
|
|
|
12
12
|
> the record of how the package arrived at what it does, and because the reasoning behind each one is
|
|
13
13
|
> usually the clearest statement of why the current behaviour is what it is.
|
|
14
14
|
|
|
15
|
+
## 0.18.1 — SECURITY: a capability id containing a comma minted authority
|
|
16
|
+
|
|
17
|
+
**Upgrade if you use `tool:*` or `agent:*` in any grant.** Present in 0.18.0 and every earlier published
|
|
18
|
+
version that has the wildcard prefix rules.
|
|
19
|
+
|
|
20
|
+
`PI_GRANTS_GRANT` is comma-separated. A capability id containing a comma was admitted by a wildcard's
|
|
21
|
+
**prefix** rule — `agent:x,tool:bash` starts with `agent:`, so a root holding `agent:*` covered it — then
|
|
22
|
+
written verbatim into the child's grant and split by the child into two capabilities. The child received a
|
|
23
|
+
real `tool:bash` from a tree whose root never held it, `denied` was empty, so nothing recorded an
|
|
24
|
+
escalation and the ledger line read as an ordinary authorised delegation.
|
|
25
|
+
|
|
26
|
+
`tool:*` is affected identically, since it covers every namespace.
|
|
27
|
+
|
|
28
|
+
Fixed with two guards: a malformed id can no longer be **granted** (it lands in `denied` and is recorded as
|
|
29
|
+
the escalation attempt it is), and neither grant writer will **emit** one. No legitimate id is affected —
|
|
30
|
+
`ext:@scope/pkg/tool`, `skill:my-skill`, `agent:my_agent` and both wildcards are unchanged. Tracked as
|
|
31
|
+
R-132.
|
|
32
|
+
|
|
15
33
|
## 0.18.0 — generic runtime enforcement for external controllers
|
|
16
34
|
|
|
17
35
|
- Optional correlation metadata joins capability decisions to run/task/workspace/context IDs, candidate
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -28,4 +28,19 @@ export declare function maySpawnDefinition(ownGrant: Capability[], name: string)
|
|
|
28
28
|
export declare const DELEGATE_CAPABILITY: Capability;
|
|
29
29
|
/** Accept `read` or `tool:read` or `ext:pkg/tool` and normalise to a capability id. */
|
|
30
30
|
export declare function normaliseCapability(raw: string): Capability;
|
|
31
|
+
/** False when an id would be read as more than one capability by any channel that carries it. */
|
|
32
|
+
export declare function isWellFormedCapability(id: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The write-side backstop, for every channel that joins capabilities into one string.
|
|
35
|
+
*
|
|
36
|
+
* `covered()` already refuses to GRANT a malformed id, so this should be unreachable — which is exactly
|
|
37
|
+
* why it exists. `grant-env.ts` says it better than I can: "the third channel — whatever it turns out to
|
|
38
|
+
* be — should cost a refusal rather than an injection. A guard that depends on my enumeration being
|
|
39
|
+
* complete is not a guard." The propagation channel turned out to be that third channel, and it had no
|
|
40
|
+
* backstop while the file-writing channel did.
|
|
41
|
+
*
|
|
42
|
+
* Loud rather than silently filtered: a malformed id here means something upstream admitted one, and
|
|
43
|
+
* dropping it quietly would hide the defect that produced it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function assertCapabilitiesArePropagatable(grant: readonly Capability[]): void;
|
|
31
46
|
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,uGAAuG;AACvG,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,UAA6B,CAAC;AAE7E;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAShF;AAED,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,EAAE,UAA4B,CAAC;AAE/D,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAM3D;AAwBD,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAWpF"}
|
package/dist/capabilities.js
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { AGENT_WILDCARD } from "./resolve.js";
|
|
15
15
|
import { WILDCARD } from "./pi-tools.js";
|
|
16
|
+
import { GovernanceRefusal, refusal } from "./refusals.js";
|
|
16
17
|
/** The capability that authorises spawning a definition (ADR-0017). `tool:*` satisfies any of them. */
|
|
17
18
|
export const agentCapability = (name) => `agent:${name}`;
|
|
18
19
|
/**
|
|
@@ -42,4 +43,50 @@ export function normaliseCapability(raw) {
|
|
|
42
43
|
}
|
|
43
44
|
return `tool:${value}`;
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Characters that make a capability id mean something OTHER than one capability.
|
|
48
|
+
*
|
|
49
|
+
* A capability id is never a list. `PI_GRANTS_GRANT` is comma-separated and `parseList` trims and splits
|
|
50
|
+
* it, so a comma inside a single id means the child reads it as several — including ones nothing granted.
|
|
51
|
+
* Newlines are here for the same reason one level out: the grant travels through an environment variable
|
|
52
|
+
* and, via `assertGrantIsWritable`, a shell-sourced file.
|
|
53
|
+
*
|
|
54
|
+
* **Measured, on the published 0.18.0.** A root holding `agent:*` (or `tool:*`) that requested
|
|
55
|
+
* `agent:x,tool:bash` had it admitted by the wildcard's prefix rule, written verbatim into the child's
|
|
56
|
+
* grant, and split by the child into `agent:x` + `tool:bash` — minting a capability the root never held,
|
|
57
|
+
* with `denied: []` so nothing recorded an escalation and the ledger line looked clean.
|
|
58
|
+
*
|
|
59
|
+
* Deliberately a blocklist of structurally dangerous characters rather than the full grammar whitelist in
|
|
60
|
+
* `isSafeCapability`. That whitelist is right where it lives — the boundary that GENERATES a grant — but
|
|
61
|
+
* this is the enforcement path, which must keep accepting whatever ids operators already have. A security
|
|
62
|
+
* patch to a released version should close the hole without inventing a new way to refuse a legitimate
|
|
63
|
+
* setup. `grant-env.ts` predicted this channel: "the third channel — whatever it turns out to be — should
|
|
64
|
+
* cost a refusal rather than an injection."
|
|
65
|
+
*/
|
|
66
|
+
const CAPABILITY_ID_SEPARATORS = /[,\r\n\0]/;
|
|
67
|
+
/** False when an id would be read as more than one capability by any channel that carries it. */
|
|
68
|
+
export function isWellFormedCapability(id) {
|
|
69
|
+
return id.length > 0 && !CAPABILITY_ID_SEPARATORS.test(id) && id.trim() === id;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The write-side backstop, for every channel that joins capabilities into one string.
|
|
73
|
+
*
|
|
74
|
+
* `covered()` already refuses to GRANT a malformed id, so this should be unreachable — which is exactly
|
|
75
|
+
* why it exists. `grant-env.ts` says it better than I can: "the third channel — whatever it turns out to
|
|
76
|
+
* be — should cost a refusal rather than an injection. A guard that depends on my enumeration being
|
|
77
|
+
* complete is not a guard." The propagation channel turned out to be that third channel, and it had no
|
|
78
|
+
* backstop while the file-writing channel did.
|
|
79
|
+
*
|
|
80
|
+
* Loud rather than silently filtered: a malformed id here means something upstream admitted one, and
|
|
81
|
+
* dropping it quietly would hide the defect that produced it.
|
|
82
|
+
*/
|
|
83
|
+
export function assertCapabilitiesArePropagatable(grant) {
|
|
84
|
+
const malformed = grant.filter((c) => !isWellFormedCapability(c));
|
|
85
|
+
if (malformed.length === 0)
|
|
86
|
+
return;
|
|
87
|
+
throw new GovernanceRefusal(refusal("GRANT_ID_MALFORMED", `refusing to build a child environment: ${JSON.stringify(malformed)} contain characters that are not ` +
|
|
88
|
+
`part of a capability id. The grant is comma-separated, so a child would read these as several ` +
|
|
89
|
+
`capabilities — including ones nothing granted. Report this: a malformed id reached propagation, ` +
|
|
90
|
+
`which means a guard upstream admitted it.`, { malformed: malformed.join(" ") }));
|
|
91
|
+
}
|
|
45
92
|
//# sourceMappingURL=capabilities.js.map
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAmB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAmB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE3D,uGAAuG;AACvG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAsB,EAAE,IAAY;IACrE,mGAAmG;IACnG,wGAAwG;IACxG,mGAAmG;IACnG,OAAO,CACL,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,mBAAmB,GAAe,eAAe,CAAC;AAE/D,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtH,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAE7C,iGAAiG;AACjG,MAAM,UAAU,sBAAsB,CAAC,EAAU;IAC/C,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iCAAiC,CAAC,KAA4B;IAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,MAAM,IAAI,iBAAiB,CAAC,OAAO,CACjC,oBAAoB,EACpB,0CAA0C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAmC;QACtG,gGAAgG;QAChG,kGAAkG;QAClG,2CAA2C,EAC3C,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/delegate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYlH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYlH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA+Q7F"}
|
package/dist/delegate.js
CHANGED
|
@@ -16,6 +16,7 @@ import { suggestForUnknown, unknownCapabilities } from "./catalog.js";
|
|
|
16
16
|
import { GovernanceRefusal, refusal } from "./refusals.js";
|
|
17
17
|
import { digestTask, normaliseCorrelation, } from "./correlation.js";
|
|
18
18
|
import { resolveDelegationApproval } from "./delegation-approval.js";
|
|
19
|
+
import { assertCapabilitiesArePropagatable } from "./capabilities.js";
|
|
19
20
|
export function planDelegation(request, ctx) {
|
|
20
21
|
const childDepth = ctx.depth + 1;
|
|
21
22
|
const denied = (plan, code) => plan.reason ? { ...plan, refusal: refusal(code, plan.reason) } : plan;
|
|
@@ -235,7 +236,7 @@ export function planDelegation(request, ctx) {
|
|
|
235
236
|
args.splice(args.length - 1, 0, "-e", ctx.extensionPath);
|
|
236
237
|
}
|
|
237
238
|
const env = {
|
|
238
|
-
[ENV_GRANT]: result.effective.join(","),
|
|
239
|
+
[ENV_GRANT]: (assertCapabilitiesArePropagatable(result.effective), result.effective.join(",")),
|
|
239
240
|
[ENV_DEPTH]: String(childDepth),
|
|
240
241
|
[ENV_MAX_DEPTH]: String(ctx.maxDepth),
|
|
241
242
|
};
|
package/dist/delegate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAA+C,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAuC,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElH,4GAA4G;AAC5G,0GAA0G;AAC1G,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvI,OAAO,EAAE,gBAAgB,EAA4B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAA4C,MAAM,eAAe,CAAC;AACrG,OAAO,EACL,UAAU,EACV,oBAAoB,GAGrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAG3E,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C;;;;GAIG;AACH,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAC3C,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAC7C,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,gLASjB,CAAC;AAEX,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,GAAG,SAAS,KAAG,UAAU,EACW,CAAC;AAkB1E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,oBAAoB,EAAE,UAAU,EAAE,EAClC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,GAC7B,UAAU,EAAE,CAgBd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAO7E;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAStG;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,UAAU,EAAkB,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,EAAE,CAGlE;AAED,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;OAMG;IACH;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,UAAU,CAInB;AAED,2GAA2G;AAC3G,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAoBlE"}
|
package/dist/propagation.js
CHANGED
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { WILDCARD } from "./pi-tools.js";
|
|
28
28
|
import { inheritApprovals } from "./approval.js";
|
|
29
|
+
import { assertCapabilitiesArePropagatable } from "./capabilities.js";
|
|
29
30
|
export const ENV_GRANT = "PI_GRANTS_GRANT";
|
|
30
31
|
/**
|
|
31
32
|
* Total descendants this session may create in its whole subtree (`src/fanout.ts`).
|
|
@@ -195,7 +196,7 @@ export function childEnv(input) {
|
|
|
195
196
|
return {};
|
|
196
197
|
const inheritable = input.ownGrant.filter((c) => c !== WILDCARD);
|
|
197
198
|
const env = {
|
|
198
|
-
[ENV_GRANT]: inheritable.join(","),
|
|
199
|
+
[ENV_GRANT]: (assertCapabilitiesArePropagatable(inheritable), inheritable.join(",")),
|
|
199
200
|
[ENV_DEPTH]: String(input.depth + 1),
|
|
200
201
|
[ENV_MAX_DEPTH]: String(input.maxDepth),
|
|
201
202
|
};
|
package/dist/propagation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propagation.js","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAA4B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"propagation.js","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"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"}
|
package/dist/refusals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const REFUSAL_CODES: readonly ["CAPABILITY_ESCALATION", "DEFINITION_NOT_AUTHORIZED", "UNDECLARED_TOOLS", "UNKNOWN_TOOL", "GATED_UNAPPROVED", "APPROVAL_EXPIRED", "APPROVAL_SCOPE_MISMATCH", "APPROVAL_FLOW_FAILED", "DEPTH_EXCEEDED", "FANOUT_EXCEEDED", "EXECUTOR_UNAVAILABLE", "CHILD_TIMED_OUT", "CHILD_CANCELLED", "CHILD_EXIT_NONZERO", "TASK_MISSING", "UNKNOWN_DEFINITION", "CEILING_PATTERNS_UNRESOLVED", "NARROWING_VIOLATED", "DEFINITION_UNREADABLE", "CORRELATION_TOO_LARGE", "CORRELATION_INVALID", "LEDGER_WRITE_FAILED", "FANOUT_FAILED", "WORKSPACE_NOT_REGISTERED", "WORKSPACE_WRITE_CONFLICT", "WORKSPACE_LEASE_STALE", "CHECK_NOT_CONFIGURED", "CHECK_CONFIGURATION_INVALID", "CHECK_IDENTITY_UNAVAILABLE", "CHECK_IDENTITY_MISMATCH"];
|
|
1
|
+
export declare const REFUSAL_CODES: readonly ["CAPABILITY_ESCALATION", "GRANT_ID_MALFORMED", "DEFINITION_NOT_AUTHORIZED", "UNDECLARED_TOOLS", "UNKNOWN_TOOL", "GATED_UNAPPROVED", "APPROVAL_EXPIRED", "APPROVAL_SCOPE_MISMATCH", "APPROVAL_FLOW_FAILED", "DEPTH_EXCEEDED", "FANOUT_EXCEEDED", "EXECUTOR_UNAVAILABLE", "CHILD_TIMED_OUT", "CHILD_CANCELLED", "CHILD_EXIT_NONZERO", "TASK_MISSING", "UNKNOWN_DEFINITION", "CEILING_PATTERNS_UNRESOLVED", "NARROWING_VIOLATED", "DEFINITION_UNREADABLE", "CORRELATION_TOO_LARGE", "CORRELATION_INVALID", "LEDGER_WRITE_FAILED", "FANOUT_FAILED", "WORKSPACE_NOT_REGISTERED", "WORKSPACE_WRITE_CONFLICT", "WORKSPACE_LEASE_STALE", "CHECK_NOT_CONFIGURED", "CHECK_CONFIGURATION_INVALID", "CHECK_IDENTITY_UNAVAILABLE", "CHECK_IDENTITY_MISMATCH"];
|
|
2
2
|
export type RefusalCode = (typeof REFUSAL_CODES)[number];
|
|
3
3
|
export interface StructuredRefusal {
|
|
4
4
|
code: RefusalCode;
|
package/dist/refusals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,4tBAoChB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACrC,iBAAiB,CAEnB;AAED,+GAA+G;AAC/G,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAEpC,KAAK,EAAE,iBAAiB;CAMrC"}
|
package/dist/refusals.js
CHANGED
package/dist/refusals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusals.js","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,uBAAuB;IACvB,2BAA2B;IAC3B,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,yBAAyB;IACzB,sBAAsB;IACtB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,qGAAqG;IACrG,wFAAwF;IACxF,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,kGAAkG;IAClG,sEAAsE;IACtE,cAAc;IACd,oBAAoB;IACpB,6BAA6B;IAC7B,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,uBAAuB;IACvB,sBAAsB;IACtB,6BAA6B;IAC7B,4BAA4B;IAC5B,yBAAyB;CACjB,CAAC;AAWX,MAAM,UAAU,OAAO,CACrB,IAAiB,EACjB,OAAe,EACf,OAAsC;IAEtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/G,CAAC;AAED,+GAA+G;AAC/G,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAc;IAClB,OAAO,CAAgC;IAEhD,YAAY,KAAwB;QAClC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"refusals.js","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,uBAAuB;IACvB,oBAAoB;IACpB,2BAA2B;IAC3B,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,kBAAkB;IAClB,yBAAyB;IACzB,sBAAsB;IACtB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,qGAAqG;IACrG,wFAAwF;IACxF,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,kGAAkG;IAClG,sEAAsE;IACtE,cAAc;IACd,oBAAoB;IACpB,6BAA6B;IAC7B,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,uBAAuB;IACvB,sBAAsB;IACtB,6BAA6B;IAC7B,4BAA4B;IAC5B,yBAAyB;CACjB,CAAC;AAWX,MAAM,UAAU,OAAO,CACrB,IAAiB,EACjB,OAAe,EACf,OAAsC;IAEtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/G,CAAC;AAED,+GAA+G;AAC/G,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAc;IAClB,OAAO,CAAgC;IAEhD,YAAY,KAAwB;QAClC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF"}
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,UAAU,EAGvD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC,CAU3E,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAMhE;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,UAAU,EAGvD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC,CAU3E,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAMhE;AAKD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,EAAE,UAAsB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,sGAAsG;IACtG,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,6FAA6F;IAC7F,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,2FAA2F;IAC3F,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,wEAAwE;IACxE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB;;;OAGG;IACH,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B;AAID;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAkF1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,UAAQ,GAAG,IAAI,CAQnF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAQ3E"}
|
package/dist/resolve.js
CHANGED
|
@@ -56,6 +56,7 @@ export function expandSubsumed(grant) {
|
|
|
56
56
|
return [...expanded].sort();
|
|
57
57
|
}
|
|
58
58
|
import { WILDCARD } from "./pi-tools.js";
|
|
59
|
+
import { isWellFormedCapability } from "./capabilities.js";
|
|
59
60
|
/**
|
|
60
61
|
* "Any definition" — ADR-0023, and one of two wildcards this module understands.
|
|
61
62
|
*
|
|
@@ -103,7 +104,12 @@ export function resolve(input) {
|
|
|
103
104
|
* spellings of one rule, and the enforcing one was wrong.
|
|
104
105
|
*/
|
|
105
106
|
const anyCapability = held.has(WILDCARD);
|
|
106
|
-
|
|
107
|
+
// A malformed id is never covered — not by an exact hold, and above all not by a wildcard's PREFIX rule,
|
|
108
|
+
// which is how `agent:x,tool:bash` got admitted and then split into two capabilities in the child.
|
|
109
|
+
// Landing in `denied` is the right outcome rather than a throw: it fails closed AND records an
|
|
110
|
+
// escalation attempt, so the ledger shows the attempt instead of a clean line.
|
|
111
|
+
const covered = (c) => isWellFormedCapability(c)
|
|
112
|
+
&& (parent.has(c) || anyCapability || (anyDefinition && c.startsWith("agent:")));
|
|
107
113
|
const ceiling = input.ceiling === undefined ? null : new Set(input.ceiling);
|
|
108
114
|
const gated = new Set(input.gated ?? []);
|
|
109
115
|
const approved = new Set(input.approved ?? []);
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA0B;IAC3D,2BAA2B;IAC3B,kBAAkB;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAwD;IAC9E,WAAW,EAAE;QACX,WAAW;QACX,WAAW;QACX,SAAS;QACT,WAAW;QACX,YAAY;QACZ,WAAW;QACX,gBAAgB;KACjB;CACF,CAAC;AAEF,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-daddy",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"description": "Capability governance for pi sub-agents: spawn Agent Skills (SKILL.md) definitions whose allowed-tools becomes a grant that can only narrow going down a delegation tree, enforced by pi's own --tools allowlist, with an append-only ledger.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
package/src/capabilities.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import { AGENT_WILDCARD, type Capability } from "./resolve.ts";
|
|
16
16
|
import { WILDCARD } from "./pi-tools.ts";
|
|
17
|
+
import { GovernanceRefusal, refusal } from "./refusals.ts";
|
|
17
18
|
|
|
18
19
|
/** The capability that authorises spawning a definition (ADR-0017). `tool:*` satisfies any of them. */
|
|
19
20
|
export const agentCapability = (name: string): Capability => `agent:${name}`;
|
|
@@ -49,3 +50,55 @@ export function normaliseCapability(raw: string): Capability {
|
|
|
49
50
|
}
|
|
50
51
|
return `tool:${value}`;
|
|
51
52
|
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Characters that make a capability id mean something OTHER than one capability.
|
|
56
|
+
*
|
|
57
|
+
* A capability id is never a list. `PI_GRANTS_GRANT` is comma-separated and `parseList` trims and splits
|
|
58
|
+
* it, so a comma inside a single id means the child reads it as several — including ones nothing granted.
|
|
59
|
+
* Newlines are here for the same reason one level out: the grant travels through an environment variable
|
|
60
|
+
* and, via `assertGrantIsWritable`, a shell-sourced file.
|
|
61
|
+
*
|
|
62
|
+
* **Measured, on the published 0.18.0.** A root holding `agent:*` (or `tool:*`) that requested
|
|
63
|
+
* `agent:x,tool:bash` had it admitted by the wildcard's prefix rule, written verbatim into the child's
|
|
64
|
+
* grant, and split by the child into `agent:x` + `tool:bash` — minting a capability the root never held,
|
|
65
|
+
* with `denied: []` so nothing recorded an escalation and the ledger line looked clean.
|
|
66
|
+
*
|
|
67
|
+
* Deliberately a blocklist of structurally dangerous characters rather than the full grammar whitelist in
|
|
68
|
+
* `isSafeCapability`. That whitelist is right where it lives — the boundary that GENERATES a grant — but
|
|
69
|
+
* this is the enforcement path, which must keep accepting whatever ids operators already have. A security
|
|
70
|
+
* patch to a released version should close the hole without inventing a new way to refuse a legitimate
|
|
71
|
+
* setup. `grant-env.ts` predicted this channel: "the third channel — whatever it turns out to be — should
|
|
72
|
+
* cost a refusal rather than an injection."
|
|
73
|
+
*/
|
|
74
|
+
const CAPABILITY_ID_SEPARATORS = /[,\r\n\0]/;
|
|
75
|
+
|
|
76
|
+
/** False when an id would be read as more than one capability by any channel that carries it. */
|
|
77
|
+
export function isWellFormedCapability(id: string): boolean {
|
|
78
|
+
return id.length > 0 && !CAPABILITY_ID_SEPARATORS.test(id) && id.trim() === id;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The write-side backstop, for every channel that joins capabilities into one string.
|
|
83
|
+
*
|
|
84
|
+
* `covered()` already refuses to GRANT a malformed id, so this should be unreachable — which is exactly
|
|
85
|
+
* why it exists. `grant-env.ts` says it better than I can: "the third channel — whatever it turns out to
|
|
86
|
+
* be — should cost a refusal rather than an injection. A guard that depends on my enumeration being
|
|
87
|
+
* complete is not a guard." The propagation channel turned out to be that third channel, and it had no
|
|
88
|
+
* backstop while the file-writing channel did.
|
|
89
|
+
*
|
|
90
|
+
* Loud rather than silently filtered: a malformed id here means something upstream admitted one, and
|
|
91
|
+
* dropping it quietly would hide the defect that produced it.
|
|
92
|
+
*/
|
|
93
|
+
export function assertCapabilitiesArePropagatable(grant: readonly Capability[]): void {
|
|
94
|
+
const malformed = grant.filter((c) => !isWellFormedCapability(c));
|
|
95
|
+
if (malformed.length === 0) return;
|
|
96
|
+
throw new GovernanceRefusal(refusal(
|
|
97
|
+
"GRANT_ID_MALFORMED",
|
|
98
|
+
`refusing to build a child environment: ${JSON.stringify(malformed)} contain characters that are not ` +
|
|
99
|
+
`part of a capability id. The grant is comma-separated, so a child would read these as several ` +
|
|
100
|
+
`capabilities — including ones nothing granted. Report this: a malformed id reached propagation, ` +
|
|
101
|
+
`which means a guard upstream admitted it.`,
|
|
102
|
+
{ malformed: malformed.join(" ") },
|
|
103
|
+
));
|
|
104
|
+
}
|
package/src/delegate.ts
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
} from "./correlation.ts";
|
|
25
25
|
import { resolveDelegationApproval } from "./delegation-approval.ts";
|
|
26
26
|
import type { Delegation, DelegationContext, DelegationRequest } from "./delegate-types.ts";
|
|
27
|
+
import { assertCapabilitiesArePropagatable } from "./capabilities.ts";
|
|
27
28
|
export type { Delegation, DelegationContext, DelegationRequest } from "./delegate-types.ts";
|
|
28
29
|
|
|
29
30
|
export function planDelegation(request: DelegationRequest, ctx: DelegationContext): Delegation {
|
|
@@ -266,7 +267,7 @@ export function planDelegation(request: DelegationRequest, ctx: DelegationContex
|
|
|
266
267
|
}
|
|
267
268
|
|
|
268
269
|
const env: Record<string, string> = {
|
|
269
|
-
[ENV_GRANT]: result.effective.join(","),
|
|
270
|
+
[ENV_GRANT]: (assertCapabilitiesArePropagatable(result.effective), result.effective.join(",")),
|
|
270
271
|
[ENV_DEPTH]: String(childDepth),
|
|
271
272
|
[ENV_MAX_DEPTH]: String(ctx.maxDepth),
|
|
272
273
|
};
|
package/src/propagation.ts
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
import type { Capability } from "./resolve.ts";
|
|
29
29
|
import { WILDCARD } from "./pi-tools.ts";
|
|
30
30
|
import { inheritApprovals, type InheritableApproval } from "./approval.ts";
|
|
31
|
+
import { assertCapabilitiesArePropagatable } from "./capabilities.ts";
|
|
31
32
|
|
|
32
33
|
export const ENV_GRANT = "PI_GRANTS_GRANT";
|
|
33
34
|
/**
|
|
@@ -250,7 +251,7 @@ export function childEnv(input: ChildEnvInput): Record<string, string> {
|
|
|
250
251
|
if (input.governed === false) return {};
|
|
251
252
|
const inheritable = input.ownGrant.filter((c) => c !== WILDCARD);
|
|
252
253
|
const env: Record<string, string> = {
|
|
253
|
-
[ENV_GRANT]: inheritable.join(","),
|
|
254
|
+
[ENV_GRANT]: (assertCapabilitiesArePropagatable(inheritable), inheritable.join(",")),
|
|
254
255
|
[ENV_DEPTH]: String(input.depth + 1),
|
|
255
256
|
[ENV_MAX_DEPTH]: String(input.maxDepth),
|
|
256
257
|
};
|
package/src/refusals.ts
CHANGED
package/src/resolve.ts
CHANGED
|
@@ -62,6 +62,7 @@ export function expandSubsumed(grant: Capability[]): Capability[] {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
import { WILDCARD } from "./pi-tools.ts";
|
|
65
|
+
import { isWellFormedCapability } from "./capabilities.ts";
|
|
65
66
|
|
|
66
67
|
/**
|
|
67
68
|
* "Any definition" — ADR-0023, and one of two wildcards this module understands.
|
|
@@ -149,8 +150,13 @@ export function resolve(input: ResolveInput): ResolveResult {
|
|
|
149
150
|
* spellings of one rule, and the enforcing one was wrong.
|
|
150
151
|
*/
|
|
151
152
|
const anyCapability = held.has(WILDCARD);
|
|
153
|
+
// A malformed id is never covered — not by an exact hold, and above all not by a wildcard's PREFIX rule,
|
|
154
|
+
// which is how `agent:x,tool:bash` got admitted and then split into two capabilities in the child.
|
|
155
|
+
// Landing in `denied` is the right outcome rather than a throw: it fails closed AND records an
|
|
156
|
+
// escalation attempt, so the ledger shows the attempt instead of a clean line.
|
|
152
157
|
const covered = (c: Capability): boolean =>
|
|
153
|
-
|
|
158
|
+
isWellFormedCapability(c)
|
|
159
|
+
&& (parent.has(c) || anyCapability || (anyDefinition && c.startsWith("agent:")));
|
|
154
160
|
const ceiling = input.ceiling === undefined ? null : new Set(input.ceiling);
|
|
155
161
|
const gated = new Set(input.gated ?? []);
|
|
156
162
|
const approved = new Set(input.approved ?? []);
|