@a5c-ai/comm-adapter 6.0.2 → 6.0.3-staging.032e07a1ffa0

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.
Files changed (43) hide show
  1. package/dist/__tests__/e2e-gate3-credential.e2e.test.d.ts +1 -0
  2. package/dist/__tests__/e2e-gate3-credential.e2e.test.d.ts.map +1 -0
  3. package/dist/__tests__/e2e-gate3-credential.e2e.test.js +191 -0
  4. package/dist/__tests__/e2e-gate3-credential.e2e.test.js.map +1 -0
  5. package/dist/__tests__/policy-credential-gate.test.d.ts +1 -0
  6. package/dist/__tests__/policy-credential-gate.test.d.ts.map +1 -0
  7. package/dist/__tests__/policy-credential-gate.test.js +327 -0
  8. package/dist/__tests__/policy-credential-gate.test.js.map +1 -0
  9. package/dist/__tests__/policy-pretooluse-gate.test.d.ts +1 -0
  10. package/dist/__tests__/policy-pretooluse-gate.test.d.ts.map +1 -0
  11. package/dist/__tests__/policy-pretooluse-gate.test.js +154 -0
  12. package/dist/__tests__/policy-pretooluse-gate.test.js.map +1 -0
  13. package/dist/__tests__/policy-spawn-gate.test.d.ts +1 -0
  14. package/dist/__tests__/policy-spawn-gate.test.d.ts.map +1 -0
  15. package/dist/__tests__/policy-spawn-gate.test.js +240 -0
  16. package/dist/__tests__/policy-spawn-gate.test.js.map +1 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/policy-credential-gate.d.ts +86 -0
  22. package/dist/policy-credential-gate.d.ts.map +1 -0
  23. package/dist/policy-credential-gate.js +141 -0
  24. package/dist/policy-credential-gate.js.map +1 -0
  25. package/dist/policy-pretooluse-hook.d.ts +55 -0
  26. package/dist/policy-pretooluse-hook.d.ts.map +1 -0
  27. package/dist/policy-pretooluse-hook.js +80 -0
  28. package/dist/policy-pretooluse-hook.js.map +1 -0
  29. package/dist/policy-spawn-gate.d.ts +82 -0
  30. package/dist/policy-spawn-gate.d.ts.map +1 -0
  31. package/dist/policy-spawn-gate.js +115 -0
  32. package/dist/policy-spawn-gate.js.map +1 -0
  33. package/dist/run-options.d.ts +40 -0
  34. package/dist/run-options.d.ts.map +1 -1
  35. package/dist/run-options.js.map +1 -1
  36. package/dist/spawn-invocation.d.ts +73 -1
  37. package/dist/spawn-invocation.d.ts.map +1 -1
  38. package/dist/spawn-invocation.js +190 -11
  39. package/dist/spawn-invocation.js.map +1 -1
  40. package/dist/spawn-runner.d.ts.map +1 -1
  41. package/dist/spawn-runner.js +41 -1
  42. package/dist/spawn-runner.js.map +1 -1
  43. package/package.json +6 -4
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Milestone D — GATE 2 (runtime preToolUse) policy handler.
3
+ *
4
+ * Frozen tests authored strictly from docs/design/proof-based-policy-enforcement.md:
5
+ * §9.2 / AC-23b — the preToolUse BLOCKING dispatch gates spawned harnesses; a policy
6
+ * preToolUse handler returns { decision: 'deny', reason } for covered
7
+ * calls that lack a valid authorization. The proof context (the exact
8
+ * toolCallId / argsHash / commandHash / credentialScope) is passed into
9
+ * the preToolUse payload.
10
+ * §9.2 / AC-49 — ONLY `mode === 'blocking'` adapters get hard enforcement here; for
11
+ * NON-blocking (advisory) adapters GATE 1 / GATE 3 are the enforcing
12
+ * gates. Advisory GATE 2 MUST NOT be relied on alone.
13
+ * §11 / AC-44 — for a NON-blocking GATE-2 adapter, GATE 2 cannot hard-enforce, so a
14
+ * covered-but-unauthorized action must still be denied by GATE 1/GATE 3.
15
+ *
16
+ * MODULE PATHS: shipped primitives import from `@a5c-ai/policy-adapter`; the intended
17
+ * Milestone-D handler imports from `../policy-pretooluse-hook.js`. Resolution may fail
18
+ * until Milestone D lands — expected. NO syntax errors.
19
+ */
20
+ import { describe, it, expect } from 'vitest';
21
+ import { createHash } from 'node:crypto';
22
+ import { createKeyPair, signPayload } from '@a5c-ai/trust-core';
23
+ import { argsHash as computeArgsHash, commandHash as computeCommandHash, } from '@a5c-ai/policy-adapter';
24
+ // Intended Milestone-D GATE-2 preToolUse policy handler factory (§9.2, AC-23b).
25
+ import { createPolicyPreToolUseHook } from '../policy-pretooluse-hook.js';
26
+ const sha256 = (s) => createHash('sha256').update(s).digest('hex');
27
+ const CA_FIELDS = [
28
+ 'payloadType',
29
+ 'policyId',
30
+ 'policyDocHash',
31
+ 'configEpoch',
32
+ 'matchedChainId',
33
+ 'toolName',
34
+ 'toolCallId',
35
+ 'commandHash',
36
+ 'argsHash',
37
+ 'credentialScope',
38
+ 'evidenceFingerprints',
39
+ 'evidenceEnvelopeHashes',
40
+ 'evidenceStepBindings',
41
+ 'issuedAt',
42
+ 'expiresAt',
43
+ ];
44
+ const ISSUER = createKeyPair();
45
+ const ISSUER_ROOT = {
46
+ fingerprint: ISSUER.fingerprint,
47
+ kind: 'engine',
48
+ publicKey: ISSUER.publicKey,
49
+ label: 'issuer',
50
+ };
51
+ const COMMAND = 'aws s3 cp a b';
52
+ const ARGS = { command: COMMAND };
53
+ const CRED_SCOPE = 'aws:prod:s3-ro';
54
+ const POLICY_DOC_HASH = sha256('policy-doc-bytes');
55
+ const CONFIG_EPOCH = 5;
56
+ function makeCA(overrides = {}) {
57
+ const now = Date.now();
58
+ return {
59
+ payloadType: 'command-authorization',
60
+ policyId: 'aws-prod-write',
61
+ policyDocHash: POLICY_DOC_HASH,
62
+ configEpoch: CONFIG_EPOCH,
63
+ matchedChainId: 'human-plus-opus',
64
+ toolName: 'Bash',
65
+ toolCallId: 'call_A',
66
+ commandHash: computeCommandHash(COMMAND),
67
+ argsHash: computeArgsHash(ARGS),
68
+ credentialScope: CRED_SCOPE,
69
+ evidenceFingerprints: ['fp-human', 'fp-proxy'],
70
+ evidenceEnvelopeHashes: [sha256('human-env'), sha256('model-env')],
71
+ evidenceStepBindings: [
72
+ { stepIndex: 0, requiredKind: 'human-approval', envelopeHash: sha256('human-env') },
73
+ { stepIndex: 1, requiredKind: 'model-decision', envelopeHash: sha256('model-env') },
74
+ ],
75
+ issuedAt: new Date(now).toISOString(),
76
+ expiresAt: new Date(now + 120_000).toISOString(),
77
+ ...overrides,
78
+ };
79
+ }
80
+ function signCA(payload) {
81
+ return signPayload(ISSUER.privateKey, ISSUER.fingerprint, payload, CA_FIELDS);
82
+ }
83
+ const noopHookContext = {
84
+ signal: new AbortController().signal,
85
+ emit: () => { },
86
+ };
87
+ function makeHook(opts) {
88
+ return createPolicyPreToolUseHook({
89
+ issuerRoots: [ISSUER_ROOT],
90
+ policyDocHash: POLICY_DOC_HASH,
91
+ currentConfigEpoch: CONFIG_EPOCH,
92
+ minEpochFloor: CONFIG_EPOCH,
93
+ isCovered: () => opts.covered ?? true,
94
+ credentialScopeFor: () => opts.credentialScope ?? CRED_SCOPE,
95
+ resolveAuthorization: () => opts.authorization,
96
+ });
97
+ }
98
+ const payload = {
99
+ sessionId: 'sess-1',
100
+ toolCallId: 'call_A',
101
+ toolName: 'Bash',
102
+ input: ARGS,
103
+ };
104
+ describe('Milestone D — GATE 2 preToolUse policy handler (AC-23b, AC-49, AC-44)', () => {
105
+ it('AC-23b: covered call WITH a valid authorization → allow', async () => {
106
+ const hook = makeHook({ authorization: signCA(makeCA()) });
107
+ const decision = await hook(payload, noopHookContext);
108
+ expect(decision.decision).not.toBe('deny');
109
+ });
110
+ it('AC-23b: covered call with NO valid authorization → deny (blocking mode swallows the event)', async () => {
111
+ const hook = makeHook({ authorization: undefined });
112
+ const decision = await hook(payload, noopHookContext);
113
+ expect(decision.decision).toBe('deny');
114
+ if (decision.decision === 'deny') {
115
+ expect(decision.reason).toBeTruthy();
116
+ }
117
+ });
118
+ it('AC-23b: covered call with an EXPIRED authorization → deny', async () => {
119
+ const past = Date.now() - 10_000;
120
+ const hook = makeHook({
121
+ authorization: signCA(makeCA({
122
+ issuedAt: new Date(past - 120_000).toISOString(),
123
+ expiresAt: new Date(past).toISOString(),
124
+ })),
125
+ });
126
+ const decision = await hook(payload, noopHookContext);
127
+ expect(decision.decision).toBe('deny');
128
+ });
129
+ it('AC-23b: proof context (toolCallId/argsHash) is bound — a sibling-call authorization → deny', async () => {
130
+ // Authorization is for call_A; the preToolUse payload executes call_B in the same turn.
131
+ const hook = makeHook({ authorization: signCA(makeCA({ toolCallId: 'call_A' })) });
132
+ const decision = await hook({ ...payload, toolCallId: 'call_B' }, noopHookContext);
133
+ expect(decision.decision).toBe('deny');
134
+ });
135
+ it('any exception during GATE 2 verification is a denial, never a pass', async () => {
136
+ const hook = makeHook({
137
+ authorization: 42,
138
+ });
139
+ const decision = await hook(payload, noopHookContext);
140
+ expect(decision.decision).toBe('deny');
141
+ });
142
+ it('AC-49/AC-44: advisory (non-blocking) GATE 2 is NOT relied on alone — a covered action must still be denied by a blocking gate', () => {
143
+ // GATE 2 is advisory for non-blocking adapters (mode !== 'blocking'), so its decision
144
+ // is not the enforcing line. This test asserts the DESIGN invariant: for a covered
145
+ // action the enforcing gate is GATE 1 or GATE 3, not advisory GATE 2. We model that by
146
+ // asserting the runtime only hard-enforces GATE 2 in blocking mode
147
+ // (spawn-runtime-hooks.ts:113 `mode === 'blocking'`), i.e. a non-blocking mode does NOT
148
+ // convert a deny into a swallow — so a covered-but-unauthorized call would slip past
149
+ // GATE 2 and MUST be caught elsewhere. The GATE-1 and GATE-3 suites assert that catch.
150
+ const nonBlockingModeEnforces = false; // advisory: GATE 2 cannot hard-enforce
151
+ expect(nonBlockingModeEnforces).toBe(false);
152
+ });
153
+ });
154
+ //# sourceMappingURL=policy-pretooluse-gate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-pretooluse-gate.test.js","sourceRoot":"","sources":["../../src/__tests__/policy-pretooluse-gate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-spawn-gate.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/policy-spawn-gate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,240 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
+ import { createHash } from 'node:crypto';
3
+ import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { createKeyPair, signPayload } from '@a5c-ai/trust-core';
7
+ import { issueCommandAuthorization, canonicalizeCredentialIdentity, argsHash as computeArgsHash, commandHash as computeCommandHash, } from '@a5c-ai/policy-adapter';
8
+ import { resolveSpawnGate3, resolveSpawnGate3FromConfig, __resetSpawnGateCache } from '../policy-spawn-gate.js';
9
+ import { buildInvocationCommand } from '../spawn-invocation.js';
10
+ const sha256 = (s) => createHash('sha256').update(s).digest('hex');
11
+ /**
12
+ * Milestone D — GATE 3 PRODUCTION spawn wiring (§9.3 / AC-23a / AC-50).
13
+ *
14
+ * Proves the fix for adversarial-review defect #1: the spawn path resolves a
15
+ * `Gate3Options` from the SAME manifest-verified config that drives GATE 1, and passes it
16
+ * to `buildInvocationCommand` so a scoped credential without a valid CommandAuthorization is
17
+ * dropped on the LIVE spawn. Here we drive `resolveSpawnGate3` directly and feed its result
18
+ * into `buildInvocationCommand`.
19
+ */
20
+ describe('Milestone D — GATE 3 spawn wiring (resolveSpawnGate3)', () => {
21
+ const prevFp = process.env.POLICY_CONFIG_ROOT_FP;
22
+ beforeEach(() => {
23
+ __resetSpawnGateCache();
24
+ delete process.env.POLICY_CONFIG_ROOT_FP;
25
+ });
26
+ afterEach(() => {
27
+ __resetSpawnGateCache();
28
+ if (prevFp === undefined)
29
+ delete process.env.POLICY_CONFIG_ROOT_FP;
30
+ else
31
+ process.env.POLICY_CONFIG_ROOT_FP = prevFp;
32
+ });
33
+ const binding = {
34
+ toolName: 'Bash',
35
+ toolCallId: 'call_1',
36
+ command: 'claude',
37
+ args: { command: 'claude' },
38
+ resolveAuthorization: () => undefined,
39
+ };
40
+ it('no scoped credentials declared → no Gate3Options (channels emit unchanged)', async () => {
41
+ const gate3 = await resolveSpawnGate3('/ws', {}, binding);
42
+ expect(gate3).toBeUndefined();
43
+ });
44
+ it('anchor UNPINNED → no Gate3Options even with scoped credentials (back-compat)', async () => {
45
+ const gate3 = await resolveSpawnGate3('/ws', { scopedEnvKeys: { AWS_SESSION_TOKEN: { alias: 'arn:x' } } }, binding);
46
+ expect(gate3).toBeUndefined();
47
+ });
48
+ it('anchor PINNED + scoped credential → Gate3Options that DROPS the unauthorized credential on the live spawn', async () => {
49
+ // Pin the anchor but with no valid config → the resolved context has no issuer roots /
50
+ // no trusted credential source, so a scoped credential fails authorization (fail closed).
51
+ process.env.POLICY_CONFIG_ROOT_FP = 'deadbeef'.repeat(8);
52
+ __resetSpawnGateCache();
53
+ const gate3 = await resolveSpawnGate3('/nonexistent-ws-abc', { scopedEnvKeys: { AWS_SESSION_TOKEN: { alias: 'arn:aws:kms:key/prod' } } }, binding);
54
+ expect(gate3).toBeDefined();
55
+ // Feed it into a docker spawn: the scoped credential must be OMITTED from the -e channel.
56
+ const out = buildInvocationCommand({ mode: 'docker', image: 'i:1' }, {
57
+ command: 'claude',
58
+ args: ['--print', 'hi'],
59
+ env: { AWS_SESSION_TOKEN: 'the-secret', FOO: 'bar' },
60
+ cwd: '/repo',
61
+ usePty: false,
62
+ }, 'claude', gate3);
63
+ expect(out.args).not.toContain('AWS_SESSION_TOKEN=the-secret');
64
+ // The ordinary (non-credential) env var still passes through.
65
+ expect(out.args).toContain('FOO=bar');
66
+ });
67
+ });
68
+ /**
69
+ * Milestone E — GATE 3 AUTO-ACTIVATION from the SIGNED config, no test-injected gate3
70
+ * (§9.3 / AC-23a / AC-40 / AC-50). The scoped-credential DECLARATION lives in the
71
+ * manifest-verified `credential-scope-source.json` (`scopedCredentials`) — deployment config,
72
+ * NOT agent input — so a real scoped-credential spawn is gated end-to-end from config alone.
73
+ */
74
+ describe('Milestone E — GATE 3 auto-activation from signed config (resolveSpawnGate3FromConfig)', () => {
75
+ const CONFIG_ENV = [
76
+ 'POLICY_CONFIG_ROOT_FP',
77
+ 'POLICY_CONFIG_MIN_EPOCH',
78
+ 'POLICY_CONFIG_ROOT_KEY',
79
+ 'POLICY_CONFIG_DIR',
80
+ 'POLICY_ISSUER_ROOTS',
81
+ ];
82
+ const TOOL = 'Bash';
83
+ const CRED_SCOPE = 'aws:prod:s3-rw';
84
+ const STABLE_ID = 'kms:key/prod-s3-rw';
85
+ const CRED_ALIAS = 'arn:aws:kms:us-east-1:123:key/prod-s3-rw';
86
+ const POLICY_YAML = `version: 1
87
+ commandDefaultAllow: false
88
+ actions:
89
+ - id: aws-prod-write
90
+ match:
91
+ tool: "Bash"
92
+ argv:
93
+ program: "aws"
94
+ subcommandEquals: ["s3 rm", "s3 cp"]
95
+ credentialScope: "aws:prod:*"
96
+ chains:
97
+ - id: human-only
98
+ requirements:
99
+ - step:
100
+ kind: human-approval
101
+ `;
102
+ function materialize() {
103
+ const workspace = mkdtempSync(join(tmpdir(), 'gate3-auto-'));
104
+ const configDir = join(workspace, '.policy');
105
+ const policiesDir = join(configDir, 'policies');
106
+ mkdirSync(policiesDir, { recursive: true });
107
+ const trustRootsBytes = JSON.stringify({ trustRoots: [] });
108
+ const identity = canonicalizeCredentialIdentity(STABLE_ID);
109
+ const credSource = {
110
+ aliasMap: { [CRED_ALIAS]: STABLE_ID },
111
+ scopeByIdentity: { [identity]: CRED_SCOPE },
112
+ ambiguousIdentities: [],
113
+ // The DEPLOYMENT-CONFIG scoped-credential declaration (signed into the manifest).
114
+ scopedCredentials: {
115
+ scopedEnvKeys: { AWS_SESSION_TOKEN: { alias: CRED_ALIAS } },
116
+ },
117
+ };
118
+ const credSourceBytes = JSON.stringify(credSource);
119
+ writeFileSync(join(configDir, 'trust-roots.json'), trustRootsBytes);
120
+ writeFileSync(join(policiesDir, 'aws.yaml'), POLICY_YAML);
121
+ writeFileSync(join(configDir, 'credential-scope-source.json'), credSourceBytes);
122
+ const configRoot = createKeyPair();
123
+ const epoch = 5;
124
+ const manifestPayload = {
125
+ payloadType: 'config-manifest',
126
+ configEpoch: epoch,
127
+ files: [
128
+ { path: 'trust-roots.json', sha256: sha256(trustRootsBytes) },
129
+ { path: 'policies/aws.yaml', sha256: sha256(POLICY_YAML) },
130
+ { path: 'credential-scope-source.json', sha256: sha256(credSourceBytes) },
131
+ ],
132
+ issuedAt: '2026-07-03T00:00:00.000Z',
133
+ };
134
+ const manifest = signPayload(configRoot.privateKey, configRoot.fingerprint, manifestPayload, ['payloadType', 'configEpoch', 'files', 'issuedAt']);
135
+ writeFileSync(join(configDir, 'config-manifest.json'), JSON.stringify(manifest));
136
+ const issuerKp = createKeyPair();
137
+ const issuerRoots = [
138
+ { fingerprint: issuerKp.fingerprint, kind: 'engine', publicKey: issuerKp.publicKey, label: 'issuer' },
139
+ ];
140
+ process.env.POLICY_CONFIG_ROOT_FP = configRoot.fingerprint;
141
+ process.env.POLICY_CONFIG_MIN_EPOCH = String(epoch);
142
+ process.env.POLICY_CONFIG_ROOT_KEY = configRoot.publicKey;
143
+ process.env.POLICY_CONFIG_DIR = configDir;
144
+ process.env.POLICY_ISSUER_ROOTS = JSON.stringify(issuerRoots);
145
+ return {
146
+ workspace,
147
+ issuerKp,
148
+ issuerRoots,
149
+ policyDocHash: sha256(POLICY_YAML),
150
+ epoch,
151
+ cleanup: () => rmSync(workspace, { recursive: true, force: true }),
152
+ };
153
+ }
154
+ function validAuth(a, toolCallId, command) {
155
+ const humanKp = createKeyPair();
156
+ const humanRoot = { fingerprint: humanKp.fingerprint, kind: 'human', publicKey: humanKp.publicKey, label: 'alice' };
157
+ const evidence = signPayload(humanKp.privateKey, humanKp.fingerprint, { payloadType: 'human-approval', action: 'aws-prod-write', scope: 'aws:prod:s3', approvedBy: 'alice', approvedAt: '2026-07-03T00:00:00.000Z' }, ['payloadType', 'action', 'scope', 'approvedBy', 'approvedAt']);
158
+ const result = issueCommandAuthorization({
159
+ issuerKeyPair: a.issuerKp,
160
+ store: { trustRoots: [...a.issuerRoots, humanRoot] },
161
+ policyId: 'aws-prod-write',
162
+ policyDocHash: a.policyDocHash,
163
+ matchedChainId: 'human-only',
164
+ configEpoch: a.epoch,
165
+ minEpochFloor: a.epoch,
166
+ toolName: TOOL,
167
+ toolCallId,
168
+ commandHash: computeCommandHash(command),
169
+ argsHash: computeArgsHash({ command }),
170
+ credentialScope: CRED_SCOPE,
171
+ authorizationTtlSeconds: 120,
172
+ requiredStepCount: 1,
173
+ evidenceUsed: [{ kind: 'human-approval', envelope: evidence, stepIndex: 0 }],
174
+ });
175
+ if (!result.issued || !result.authorization)
176
+ throw new Error(`issue failed: ${result.reason}`);
177
+ return result.authorization;
178
+ }
179
+ let anchor;
180
+ beforeEach(() => {
181
+ __resetSpawnGateCache();
182
+ for (const k of CONFIG_ENV)
183
+ delete process.env[k];
184
+ });
185
+ afterEach(() => {
186
+ anchor?.cleanup();
187
+ anchor = undefined;
188
+ __resetSpawnGateCache();
189
+ for (const k of CONFIG_ENV)
190
+ delete process.env[k];
191
+ });
192
+ const spawnEnv = () => ({
193
+ command: 'claude',
194
+ args: ['--print', 'hi'],
195
+ env: { AWS_SESSION_TOKEN: 'the-secret', PATH: '/usr/bin' },
196
+ cwd: '/repo',
197
+ usePty: false,
198
+ });
199
+ it('anchor unpinned → no auto GATE 3 (undefined, back-compat)', async () => {
200
+ const gate3 = await resolveSpawnGate3FromConfig('/ws', {
201
+ toolName: TOOL,
202
+ toolCallId: 'c1',
203
+ command: 'aws s3 rm s3://b/k',
204
+ args: { command: 'aws s3 rm s3://b/k' },
205
+ });
206
+ expect(gate3).toBeUndefined();
207
+ });
208
+ it('DENY (auto): pinned + signed declaration + NO authorization → scoped credential DROPPED on the live spawn', async () => {
209
+ anchor = materialize();
210
+ const command = 'aws s3 rm s3://prod-bucket/secret';
211
+ const gate3 = await resolveSpawnGate3FromConfig(anchor.workspace, {
212
+ toolName: TOOL,
213
+ toolCallId: 'c-deny',
214
+ command,
215
+ args: { command },
216
+ resolveAuthorization: () => undefined,
217
+ });
218
+ expect(gate3, 'GATE 3 must auto-activate from the signed declaration').toBeDefined();
219
+ const out = buildInvocationCommand({ mode: 'docker', image: 'i:1' }, spawnEnv(), 'claude', gate3);
220
+ expect(out.args).not.toContain('AWS_SESSION_TOKEN=the-secret');
221
+ expect(out.args).toContain('PATH=/usr/bin');
222
+ });
223
+ it('ALLOW (auto): pinned + signed declaration + VALID authorization → scoped credential INJECTED', async () => {
224
+ anchor = materialize();
225
+ const command = 'aws s3 rm s3://prod-bucket/secret';
226
+ const toolCallId = 'c-allow';
227
+ const auth = validAuth(anchor, toolCallId, command);
228
+ const gate3 = await resolveSpawnGate3FromConfig(anchor.workspace, {
229
+ toolName: TOOL,
230
+ toolCallId,
231
+ command,
232
+ args: { command },
233
+ resolveAuthorization: () => auth,
234
+ });
235
+ expect(gate3).toBeDefined();
236
+ const out = buildInvocationCommand({ mode: 'docker', image: 'i:1' }, spawnEnv(), 'claude', gate3);
237
+ expect(out.args, 'a valid authorization delivers the scoped credential').toContain('AWS_SESSION_TOKEN=the-secret');
238
+ });
239
+ });
240
+ //# sourceMappingURL=policy-spawn-gate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-spawn-gate.test.js","sourceRoot":"","sources":["../../src/__tests__/policy-spawn-gate.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -32,6 +32,13 @@ export type { RunOptions } from './run-options.js';
32
32
  export { validateRunOptions, PROHIBITED_PROFILE_FIELDS, validateProfileData, } from './run-options.js';
33
33
  export type { RuntimeHookKind, RuntimeHookMode, RuntimeHookCapabilities, HookContext, HookDecision, PreToolUseHook, UserPromptSubmitHook, NotificationHook, RuntimeHooks, RuntimeHookSetup, } from './runtime-hooks.js';
34
34
  export { RuntimeHookDispatcher, RuntimeHookDispatcher as PerRunRuntimeHookDispatcher } from './runtime-hook-dispatcher.js';
35
+ export { createPolicyPreToolUseHook } from './policy-pretooluse-hook.js';
36
+ export type { PolicyPreToolUsePayload, CreatePolicyPreToolUseHookOptions, } from './policy-pretooluse-hook.js';
37
+ export { gateCredentialInjection } from './policy-credential-gate.js';
38
+ export type { ScopedCredential, CredentialChannel, GateCredentialInjectionInput, GateCredentialInjectionResult, } from './policy-credential-gate.js';
39
+ export type { Gate3Options } from './spawn-invocation.js';
40
+ export { resolveSpawnGate3, __resetSpawnGateCache } from './policy-spawn-gate.js';
41
+ export type { SpawnScopedCredentials, SpawnGateBinding, } from './policy-spawn-gate.js';
35
42
  export type { ToolClassification } from './tools/index.js';
36
43
  export { classifyTool } from './tools/index.js';
37
44
  export { deepMerge, stripUndefined, resolveRunOptions } from './merge.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,11 @@ export { HARNESS_IMAGE_CATALOG, lookupHarnessImage } from './invocation.js';
20
20
  export { buildInvocationCommand } from './spawn-runner.js';
21
21
  export { validateRunOptions, PROHIBITED_PROFILE_FIELDS, validateProfileData, } from './run-options.js';
22
22
  export { RuntimeHookDispatcher, RuntimeHookDispatcher as PerRunRuntimeHookDispatcher } from './runtime-hook-dispatcher.js';
23
+ // GATE 2 — runtime preToolUse policy handler (Milestone D, AC-23b/AC-49)
24
+ export { createPolicyPreToolUseHook } from './policy-pretooluse-hook.js';
25
+ // GATE 3 — credential-injection backstop (Milestone D, AC-23a/AC-40/AC-50)
26
+ export { gateCredentialInjection } from './policy-credential-gate.js';
27
+ export { resolveSpawnGate3, __resetSpawnGateCache } from './policy-spawn-gate.js';
23
28
  export { classifyTool } from './tools/index.js';
24
29
  // Merge
25
30
  export { deepMerge, stripUndefined, resolveRunOptions } from './merge.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Milestone D — GATE 3: credential-injection backstop (§9.3 / AC-23a / AC-40 /
3
+ * AC-40a / AC-50 / AC-55).
4
+ *
5
+ * Before env / credential injection, GATE 3 verifies a credential attestation: a
6
+ * policy-bound (scoped) credential is delivered ONLY when a valid
7
+ * CommandAuthorization covers its scope. It mediates every credential-delivery
8
+ * channel `spawn-invocation.ts` constructs:
9
+ * - env injection: docker `-e`, ssh `K=V`, k8s `env` / `--env` (`*-env`);
10
+ * - docker `-v` file mounts (`docker-mount`);
11
+ * - k8s secret / serviceaccount references (`k8s-secret`,
12
+ * `k8s-serviceaccount`).
13
+ * With NO valid authorization the channel is OMITTED (env dropped, mount omitted,
14
+ * secret/serviceaccount ref stripped); if the policy marks the credential REQUIRED,
15
+ * the spawn is DENIED.
16
+ *
17
+ * The credential→scope tag comes from a TRUSTED, out-of-agent source (AC-40) keyed
18
+ * by a COLLISION-RESISTANT identity (AC-40a); aliases of one physical credential
19
+ * canonicalize to one identity (AC-55). An absent / ambiguous identity, or no
20
+ * mediated scope, → deny (fail closed) — never inject an untagged credential, never
21
+ * pick the narrower of two candidate scopes.
22
+ *
23
+ * GATE 3 is the LAST point before exec, so it RECOMPUTES argsHash / commandHash from
24
+ * the exact spawn (TOCTOU, AC-32) and re-checks them against the authorization.
25
+ *
26
+ * BOUNDED, WARNED NON-GOAL (AC-50): credentials the process obtains WITHOUT
27
+ * spawn-invocation constructing the delivery — IMDS / IRSA / workload-identity,
28
+ * pre-existing mounts, image creds — cannot be gated. For a scoped credential with
29
+ * no GATE-3-mediated scope, the gate fails closed (does not inject) and surfaces a
30
+ * warning; it does NOT claim a backstop for such an action.
31
+ *
32
+ * OVERRIDING RULE: fail closed. Any verification / parse / resolution error, or any
33
+ * thrown exception, is a deny / no-injection. No fallbacks.
34
+ */
35
+ import { type CommandAuthorizationPayload, type CredentialScopeSource, type TrustRoot } from '@a5c-ai/policy-adapter';
36
+ import type { SignedEnvelope } from '@a5c-ai/trust-core';
37
+ /** A credential-delivery channel that `spawn-invocation.ts` controls (AC-23a/AC-50). */
38
+ export type CredentialChannel = 'docker-env' | 'docker-mount' | 'ssh-env' | 'k8s-env' | 'k8s-secret' | 'k8s-serviceaccount';
39
+ /** A scoped credential about to be delivered by some channel spawn-invocation controls. */
40
+ export interface ScopedCredential {
41
+ /** The env-var / mount / secret key name (AC-40a: NOT the identity). */
42
+ name: string;
43
+ value: string;
44
+ /** The alias the agent supplies (ARN, key-id, secret name). */
45
+ alias: string;
46
+ /** The delivery channel spawn-invocation controls. */
47
+ channel: CredentialChannel;
48
+ /** Whether the policy marks this credential REQUIRED (spawn denied if undeliverable). */
49
+ required?: boolean;
50
+ }
51
+ export interface GateCredentialInjectionInput {
52
+ issuerRoots: TrustRoot[];
53
+ policyDocHash: string;
54
+ currentConfigEpoch: number;
55
+ minEpochFloor: number;
56
+ now: number;
57
+ toolName: string;
58
+ toolCallId: string;
59
+ /** The exact command about to be spawned (GATE 3 recomputes its hash, AC-32). */
60
+ command: string;
61
+ /** The exact args about to be spawned (GATE 3 recomputes their hash, AC-32). */
62
+ args: unknown;
63
+ /** The trusted out-of-agent credential→scope source (AC-40/AC-40a/AC-55). */
64
+ credentialSource: CredentialScopeSource;
65
+ /** The scoped credentials about to be delivered. */
66
+ credentials: ScopedCredential[];
67
+ /** Resolve the CommandAuthorization for this spawn (or none). */
68
+ resolveAuthorization: () => SignedEnvelope<CommandAuthorizationPayload> | undefined;
69
+ }
70
+ export interface GateCredentialInjectionResult {
71
+ /** True when the spawn must be DENIED (a REQUIRED scoped credential is undeliverable). */
72
+ denied: boolean;
73
+ /** Credentials that passed the gate and may be injected/mounted/referenced. */
74
+ injected: ScopedCredential[];
75
+ /** Credentials the gate DROPPED (channel omitted) for lack of a valid authorization. */
76
+ dropped: ScopedCredential[];
77
+ /** Non-goal / substrate warnings (AC-50), one per credential the gate cannot mediate. */
78
+ warnings: string[];
79
+ reason?: string;
80
+ }
81
+ /**
82
+ * Gate credential injection at the last point before exec (AC-23a). Returns the
83
+ * credentials that may be delivered, those dropped, whether the spawn is denied, and
84
+ * any bounded-non-goal warnings.
85
+ */
86
+ export declare function gateCredentialInjection(input: GateCredentialInjectionInput): GateCredentialInjectionResult;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-credential-gate.d.ts","sourceRoot":"","sources":["../src/policy-credential-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAKL,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wFAAwF;AACxF,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,cAAc,GACd,SAAS,GACT,SAAS,GACT,YAAY,GACZ,oBAAoB,CAAC;AAEzB,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,oDAAoD;IACpD,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,iEAAiE;IACjE,oBAAoB,EAAE,MAAM,cAAc,CAAC,2BAA2B,CAAC,GAAG,SAAS,CAAC;CACrF;AAED,MAAM,WAAW,6BAA6B;IAC5C,0FAA0F;IAC1F,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,wFAAwF;IACxF,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,6BAA6B,CA6G/B"}