Skip to content

Commit 4c5462a

Browse files
committed
feat(cli): unified enforcement kernel
Know-Code-Verified: fd7e02b523d0a6ba9724a001fe8097b18b3c35d5379d04bdd21911f0b12252ef
1 parent d9712d1 commit 4c5462a

9 files changed

Lines changed: 867 additions & 187 deletions

File tree

‎packages/cli/src/attest.test.ts‎

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import {
2727
hasValidOverrideAllow,
2828
isRestrictedOverrideContext,
2929
tryOverrideBypass,
30-
writeOverrideAllow,
30+
writeSealedOverrideAllow,
31+
writeUnsignedOverrideAllow,
3132
} from "./override.js";
3233
import { initAttestKey, signPayload } from "./seal.js";
3334
import { DEFAULT_CONFIG } from "./types.js";
@@ -143,18 +144,28 @@ describe("attest prerequisites", () => {
143144

144145
describe("override policy", () => {
145146
let dir: string;
147+
let attestHome: string;
148+
const passphrase = "override-test-passphrase";
146149
const keys = [
147150
"KNOW_CODE_OVERRIDE",
148151
"KNOW_CODE_HOOK_FORMAT",
149152
"CI",
150153
"GITHUB_ACTIONS",
154+
"KNOW_CODE_ATTEST_HOME",
155+
"KNOW_CODE_ATTEST_PASSPHRASE",
151156
] as const;
152157
const prev: Record<string, string | undefined> = {};
153158

154159
before(() => {
155160
for (const k of keys) prev[k] = process.env[k];
161+
delete process.env.KNOW_CODE_HOOK_FORMAT;
162+
attestHome = mkdtempSync(join(tmpdir(), "kc-ovr-att-"));
163+
process.env.KNOW_CODE_ATTEST_HOME = attestHome;
164+
process.env.KNOW_CODE_ATTEST_PASSPHRASE = passphrase;
156165
dir = mkdtempSync(join(tmpdir(), "override-"));
157166
mkdirSync(join(dir, ".know-code"), { recursive: true });
167+
writeConfig(dir, { ...DEFAULT_CONFIG, level: "lite", requireAttest: true });
168+
initAttestKey(dir, passphrase);
158169
});
159170

160171
after(() => {
@@ -163,15 +174,18 @@ describe("override policy", () => {
163174
else process.env[k] = prev[k];
164175
}
165176
rmSync(dir, { recursive: true, force: true });
177+
rmSync(attestHome, { recursive: true, force: true });
166178
});
167179

168-
it("denies OVERRIDE in agent-hook context", () => {
169-
process.env.KNOW_CODE_OVERRIDE = "1";
170-
process.env.KNOW_CODE_HOOK_FORMAT = "cursor";
180+
it("denies OVERRIDE in agent-hook context", async () => {
181+
delete process.env.KNOW_CODE_HOOK_FORMAT;
171182
delete process.env.CI;
172183
delete process.env.GITHUB_ACTIONS;
184+
// Seal while not in agent context (sealing requires human TTY path).
185+
await writeSealedOverrideAllow(dir, { passphrase });
186+
process.env.KNOW_CODE_OVERRIDE = "1";
187+
process.env.KNOW_CODE_HOOK_FORMAT = "cursor";
173188
assert.equal(isRestrictedOverrideContext(), true);
174-
writeOverrideAllow(dir);
175189
const r = tryOverrideBypass(dir);
176190
assert.equal(r.allowed, false);
177191
assert.match(r.reason || "", /denied in agent hooks/);
@@ -189,12 +203,23 @@ describe("override policy", () => {
189203
assert.match(r.reason || "", /know-code override/);
190204
});
191205

192-
it("allows then consumes override-allow", () => {
206+
it("denies agent-minted unsigned override-allow", () => {
207+
process.env.KNOW_CODE_OVERRIDE = "1";
208+
delete process.env.KNOW_CODE_HOOK_FORMAT;
209+
delete process.env.CI;
210+
delete process.env.GITHUB_ACTIONS;
211+
writeUnsignedOverrideAllow(dir);
212+
assert.equal(hasValidOverrideAllow(dir), false);
213+
const r = tryOverrideBypass(dir);
214+
assert.equal(r.allowed, false);
215+
});
216+
217+
it("allows then consumes sealed override-allow", async () => {
193218
process.env.KNOW_CODE_OVERRIDE = "1";
194219
delete process.env.KNOW_CODE_HOOK_FORMAT;
195220
delete process.env.CI;
196221
delete process.env.GITHUB_ACTIONS;
197-
writeOverrideAllow(dir);
222+
await writeSealedOverrideAllow(dir, { passphrase });
198223
assert.equal(hasValidOverrideAllow(dir), true);
199224
const r = tryOverrideBypass(dir);
200225
assert.equal(r.allowed, true);

0 commit comments

Comments
 (0)