@memnexus-ai/mx-agent-cli 0.1.209 → 0.1.210
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/dist/__tests__/claude-sync.test.js +77 -5
- package/dist/__tests__/claude-sync.test.js.map +1 -1
- package/dist/__tests__/config-generation-gate.test.js +18 -9
- package/dist/__tests__/config-generation-gate.test.js.map +1 -1
- package/dist/__tests__/generate-claude.test.js +90 -6
- package/dist/__tests__/generate-claude.test.js.map +1 -1
- package/dist/__tests__/security-posture.test.d.ts +8 -0
- package/dist/__tests__/security-posture.test.d.ts.map +1 -0
- package/dist/__tests__/security-posture.test.js +82 -0
- package/dist/__tests__/security-posture.test.js.map +1 -0
- package/dist/__tests__/start-report-generation-capture.test.d.ts +17 -0
- package/dist/__tests__/start-report-generation-capture.test.d.ts.map +1 -0
- package/dist/__tests__/start-report-generation-capture.test.js +127 -0
- package/dist/__tests__/start-report-generation-capture.test.js.map +1 -0
- package/dist/agent-config/settings.json +3 -3
- package/dist/lib/claude.d.ts.map +1 -1
- package/dist/lib/claude.js +31 -6
- package/dist/lib/claude.js.map +1 -1
- package/dist/lib/security-posture.d.ts +69 -0
- package/dist/lib/security-posture.d.ts.map +1 -0
- package/dist/lib/security-posture.js +102 -0
- package/dist/lib/security-posture.js.map +1 -0
- package/package.json +1 -1
- package/scripts/generate-claude.mjs +45 -1
- package/dist/__tests__/config-mirror-integrity.test.d.ts +0 -32
- package/dist/__tests__/config-mirror-integrity.test.d.ts.map +0 -1
- package/dist/__tests__/config-mirror-integrity.test.js +0 -248
- package/dist/__tests__/config-mirror-integrity.test.js.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the shared self-protection posture contract (security-posture.ts,
|
|
3
|
+
* #4304 Phase 4). This is the single source of truth reused by the CI generation
|
|
4
|
+
* gate and by syncClaudeConfig's no-config hard-stop, so it is worth direct
|
|
5
|
+
* coverage independent of either consumer.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=security-posture.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-posture.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/security-posture.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for the shared self-protection posture contract (security-posture.ts,
|
|
3
|
+
* #4304 Phase 4). This is the single source of truth reused by the CI generation
|
|
4
|
+
* gate and by syncClaudeConfig's no-config hard-stop, so it is worth direct
|
|
5
|
+
* coverage independent of either consumer.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, it, expect } from 'vitest';
|
|
8
|
+
import { REQUIRED_SOURCE_DENIES, SELF_PROTECTED_PATHS, unmatchedFilePathDenies, pathIsWriteProtected, assessSettingsPosture, } from '../lib/security-posture.js';
|
|
9
|
+
describe('REQUIRED_SOURCE_DENIES', () => {
|
|
10
|
+
it('is the Edit-form of every SELF_PROTECTED_PATHS entry (settings, hooks, staging, prev)', () => {
|
|
11
|
+
expect(REQUIRED_SOURCE_DENIES).toEqual([
|
|
12
|
+
'Edit(.claude/settings.json)',
|
|
13
|
+
'Edit(.claude/hooks/**)',
|
|
14
|
+
'Edit(.claude.staging-*/**)',
|
|
15
|
+
'Edit(.claude.prev-*/**)',
|
|
16
|
+
]);
|
|
17
|
+
expect(REQUIRED_SOURCE_DENIES).toHaveLength(SELF_PROTECTED_PATHS.length);
|
|
18
|
+
});
|
|
19
|
+
it('contains no unmatched file-path form (Edit-only, canary syntax fix)', () => {
|
|
20
|
+
expect(unmatchedFilePathDenies(REQUIRED_SOURCE_DENIES)).toEqual([]);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('unmatchedFilePathDenies', () => {
|
|
24
|
+
it('flags Write(path)/NotebookEdit(path)/Glob(path) but not Edit/Read/Bash or bare tool names', () => {
|
|
25
|
+
const deny = [
|
|
26
|
+
'Write(.claude/settings.json)', // flagged
|
|
27
|
+
'NotebookEdit(nb/**)', // flagged
|
|
28
|
+
'Glob(src/**)', // flagged
|
|
29
|
+
'Edit(.claude/hooks/**)', // ok
|
|
30
|
+
'Read(/secrets/**)', // ok
|
|
31
|
+
'Bash(rm -rf /)', // ok (not a file-path tool form)
|
|
32
|
+
'Write', // ok — bare tool name, matches everywhere, no warning
|
|
33
|
+
];
|
|
34
|
+
expect(unmatchedFilePathDenies(deny)).toEqual([
|
|
35
|
+
'Write(.claude/settings.json)',
|
|
36
|
+
'NotebookEdit(nb/**)',
|
|
37
|
+
'Glob(src/**)',
|
|
38
|
+
]);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('pathIsWriteProtected', () => {
|
|
42
|
+
it('accepts either the Edit form or the legacy Write form', () => {
|
|
43
|
+
expect(pathIsWriteProtected(['Edit(.claude/settings.json)'], '.claude/settings.json')).toBe(true);
|
|
44
|
+
expect(pathIsWriteProtected(['Write(.claude/settings.json)'], '.claude/settings.json')).toBe(true);
|
|
45
|
+
expect(pathIsWriteProtected(['Edit(other)'], '.claude/settings.json')).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('assessSettingsPosture', () => {
|
|
49
|
+
const ok = JSON.stringify({
|
|
50
|
+
permissions: { deny: ['Edit(.claude/settings.json)', 'Edit(.claude/hooks/**)'] },
|
|
51
|
+
});
|
|
52
|
+
it('returns null for a valid posture', () => {
|
|
53
|
+
expect(assessSettingsPosture(ok)).toBeNull();
|
|
54
|
+
});
|
|
55
|
+
it('accepts the legacy Write(...) form (lenient on form)', () => {
|
|
56
|
+
const legacy = JSON.stringify({
|
|
57
|
+
permissions: { deny: ['Write(.claude/settings.json)', 'Write(.claude/hooks/**)'] },
|
|
58
|
+
});
|
|
59
|
+
expect(assessSettingsPosture(legacy)).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
it('rejects a zero-byte / non-JSON file', () => {
|
|
62
|
+
expect(assessSettingsPosture('')).toMatch(/not valid JSON/);
|
|
63
|
+
expect(assessSettingsPosture('{ not json')).toMatch(/not valid JSON/);
|
|
64
|
+
});
|
|
65
|
+
it('rejects an empty or missing permissions.deny', () => {
|
|
66
|
+
expect(assessSettingsPosture('{"permissions":{"deny":[]}}')).toMatch(/deny is missing or empty/);
|
|
67
|
+
expect(assessSettingsPosture('{"permissions":{"allow":["Bash"]}}')).toMatch(/deny is missing or empty/);
|
|
68
|
+
expect(assessSettingsPosture('{}')).toMatch(/deny is missing or empty/);
|
|
69
|
+
});
|
|
70
|
+
it('rejects a deny list missing a required self-protection path', () => {
|
|
71
|
+
const halfProtected = JSON.stringify({
|
|
72
|
+
permissions: { deny: ['Edit(.claude/settings.json)'] }, // hooks/** missing
|
|
73
|
+
});
|
|
74
|
+
expect(assessSettingsPosture(halfProtected)).toMatch(/\.claude\/hooks/);
|
|
75
|
+
});
|
|
76
|
+
it('never throws on garbage shapes', () => {
|
|
77
|
+
expect(() => assessSettingsPosture('null')).not.toThrow();
|
|
78
|
+
expect(() => assessSettingsPosture('[]')).not.toThrow();
|
|
79
|
+
expect(() => assessSettingsPosture('42')).not.toThrow();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=security-posture.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-posture.test.js","sourceRoot":"","sources":["../../src/__tests__/security-posture.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test (#4304 Phase 4, KI item 3d): the startup-report (v2.58, #4350)
|
|
3
|
+
* captures the config-generation lines of the REAL start path.
|
|
4
|
+
*
|
|
5
|
+
* The v2.58 startup report tees/records everything the start path prints. This
|
|
6
|
+
* test drives the actual `syncClaudeConfig` — the same function `mx-agent start`
|
|
7
|
+
* calls at §5 — against a REAL git origin so the REAL generator subprocess
|
|
8
|
+
* (`node scripts/generate-claude.mjs --from-git origin/main`) materializes
|
|
9
|
+
* `.claude/` from source, then asserts the durable JSONL records the generation
|
|
10
|
+
* lines. No production code changed for this deliverable: the confirmation is that
|
|
11
|
+
* the existing capture already records these lines end-to-end.
|
|
12
|
+
*
|
|
13
|
+
* This is the committed equivalent of the built-binary smoke: temp HOME, temp
|
|
14
|
+
* worktree clone, real generator, real durable log.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=start-report-generation-capture.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-report-generation-capture.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/start-report-generation-capture.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test (#4304 Phase 4, KI item 3d): the startup-report (v2.58, #4350)
|
|
3
|
+
* captures the config-generation lines of the REAL start path.
|
|
4
|
+
*
|
|
5
|
+
* The v2.58 startup report tees/records everything the start path prints. This
|
|
6
|
+
* test drives the actual `syncClaudeConfig` — the same function `mx-agent start`
|
|
7
|
+
* calls at §5 — against a REAL git origin so the REAL generator subprocess
|
|
8
|
+
* (`node scripts/generate-claude.mjs --from-git origin/main`) materializes
|
|
9
|
+
* `.claude/` from source, then asserts the durable JSONL records the generation
|
|
10
|
+
* lines. No production code changed for this deliverable: the confirmation is that
|
|
11
|
+
* the existing capture already records these lines end-to-end.
|
|
12
|
+
*
|
|
13
|
+
* This is the committed equivalent of the built-binary smoke: temp HOME, temp
|
|
14
|
+
* worktree clone, real generator, real durable log.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
|
|
17
|
+
import { cpSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, existsSync } from 'fs';
|
|
18
|
+
import { execFileSync } from 'child_process';
|
|
19
|
+
import { tmpdir } from 'os';
|
|
20
|
+
import { dirname, join } from 'path';
|
|
21
|
+
import { fileURLToPath } from 'url';
|
|
22
|
+
import { syncClaudeConfig } from '../lib/claude.js';
|
|
23
|
+
import { startupReport } from '../lib/startup-report.js';
|
|
24
|
+
const CONFIG_SOURCE = 'mx-agent-system/agent-config';
|
|
25
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
26
|
+
/** Locate the repo root that holds the real agent-config source. */
|
|
27
|
+
function findRepoRoot() {
|
|
28
|
+
let dir = HERE;
|
|
29
|
+
for (let i = 0; i < 20; i++) {
|
|
30
|
+
if (existsSync(join(dir, CONFIG_SOURCE, 'settings.json')))
|
|
31
|
+
return dir;
|
|
32
|
+
const parent = dirname(dir);
|
|
33
|
+
if (parent === dir)
|
|
34
|
+
break;
|
|
35
|
+
dir = parent;
|
|
36
|
+
}
|
|
37
|
+
throw new Error('could not locate repo root from ' + HERE);
|
|
38
|
+
}
|
|
39
|
+
const REPO_ROOT = findRepoRoot();
|
|
40
|
+
let tmp;
|
|
41
|
+
let originDir;
|
|
42
|
+
let wt;
|
|
43
|
+
let home;
|
|
44
|
+
const OLD_HOME = process.env.HOME;
|
|
45
|
+
function git(cwd, ...args) {
|
|
46
|
+
execFileSync('git', args, { cwd, stdio: 'pipe' });
|
|
47
|
+
}
|
|
48
|
+
beforeAll(() => {
|
|
49
|
+
tmp = mkdtempSync(join(tmpdir(), 'mx-gencap-'));
|
|
50
|
+
originDir = join(tmp, 'origin.git');
|
|
51
|
+
wt = join(tmp, 'wt');
|
|
52
|
+
// Bare origin.
|
|
53
|
+
mkdirSync(originDir, { recursive: true });
|
|
54
|
+
git(originDir, 'init', '--bare', '-q');
|
|
55
|
+
// Working clone with the REAL agent-config source committed at CONFIG_SOURCE, so
|
|
56
|
+
// the generator has a faithful, generatable tree to archive from origin/main.
|
|
57
|
+
mkdirSync(wt, { recursive: true });
|
|
58
|
+
git(wt, 'init', '-q');
|
|
59
|
+
git(wt, 'config', 'user.email', 'test@example.com');
|
|
60
|
+
git(wt, 'config', 'user.name', 'Test');
|
|
61
|
+
git(wt, 'config', 'commit.gpgsign', 'false');
|
|
62
|
+
const dstSrc = join(wt, CONFIG_SOURCE);
|
|
63
|
+
mkdirSync(dirname(dstSrc), { recursive: true });
|
|
64
|
+
cpSync(join(REPO_ROOT, CONFIG_SOURCE), dstSrc, { recursive: true });
|
|
65
|
+
git(wt, 'add', '-A');
|
|
66
|
+
git(wt, 'commit', '-q', '-m', 'seed agent-config');
|
|
67
|
+
git(wt, 'branch', '-M', 'main');
|
|
68
|
+
git(wt, 'remote', 'add', 'origin', originDir);
|
|
69
|
+
git(wt, 'push', '-q', '-u', 'origin', 'main');
|
|
70
|
+
});
|
|
71
|
+
afterAll(() => {
|
|
72
|
+
rmSync(tmp, { recursive: true, force: true });
|
|
73
|
+
if (OLD_HOME === undefined)
|
|
74
|
+
delete process.env.HOME;
|
|
75
|
+
else
|
|
76
|
+
process.env.HOME = OLD_HOME;
|
|
77
|
+
});
|
|
78
|
+
beforeEach(() => {
|
|
79
|
+
home = mkdtempSync(join(tmpdir(), 'mx-gencap-home-'));
|
|
80
|
+
process.env.HOME = home;
|
|
81
|
+
startupReport._reset();
|
|
82
|
+
});
|
|
83
|
+
describe('startup report captures config-generation lines (real generator, real origin)', () => {
|
|
84
|
+
it('generates .claude/ from source and records the generation lines in the durable JSONL', () => {
|
|
85
|
+
startupReport.setContext({ project: 'proj', team: 'genteam', worktree: 'genwt' });
|
|
86
|
+
startupReport.installConsoleCapture();
|
|
87
|
+
// The real start-path config step: fetch origin, then run the generator
|
|
88
|
+
// subprocess against origin/main. No mocks — this spawns node on the actual
|
|
89
|
+
// scripts/generate-claude.mjs.
|
|
90
|
+
syncClaudeConfig(wt, { baseBranch: 'main', configSource: CONFIG_SOURCE });
|
|
91
|
+
startupReport.finalize('ok');
|
|
92
|
+
// The generator actually materialized .claude/ from source.
|
|
93
|
+
expect(existsSync(join(wt, '.claude', 'settings.json')), '.claude/ was not generated').toBe(true);
|
|
94
|
+
// The durable JSONL captured the generation lines.
|
|
95
|
+
const file = join(home, '.mx-agent', 'logs', 'startup', 'genwt.jsonl');
|
|
96
|
+
const lines = readFileSync(file, 'utf-8').trim().split('\n');
|
|
97
|
+
expect(lines).toHaveLength(1);
|
|
98
|
+
const report = JSON.parse(lines[0]);
|
|
99
|
+
expect(report.outcome).toBe('ok');
|
|
100
|
+
const messages = report.entries.map((e) => e.message).join('\n');
|
|
101
|
+
// syncClaudeConfig's generation lines (the start path's config step).
|
|
102
|
+
expect(messages).toContain('Syncing agent config');
|
|
103
|
+
expect(messages).toContain('Agent config generated from');
|
|
104
|
+
});
|
|
105
|
+
it('records a generator FAILURE warning (incl. generator stderr) when a valid backstop exists', () => {
|
|
106
|
+
// Prove generator WARNINGS also reach the JSONL: force generation to fail by
|
|
107
|
+
// pointing at a missing branch, with a valid existing .claude/ backstop so the
|
|
108
|
+
// path warn-and-continues (no hard stop) and the warning — which carries the
|
|
109
|
+
// generator's stderr — is recorded.
|
|
110
|
+
const claudeDir = join(wt, '.claude');
|
|
111
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
112
|
+
writeFileSync(join(claudeDir, 'settings.json'), JSON.stringify({
|
|
113
|
+
permissions: { deny: ['Edit(.claude/settings.json)', 'Edit(.claude/hooks/**)'] },
|
|
114
|
+
}) + '\n');
|
|
115
|
+
startupReport.setContext({ project: 'proj', team: 'genteam', worktree: 'genwt2' });
|
|
116
|
+
startupReport.installConsoleCapture();
|
|
117
|
+
// baseBranch that does not exist in origin → git fetch fails → warn-and-continue
|
|
118
|
+
// on the valid backstop (hard stop only fires without a usable backstop).
|
|
119
|
+
syncClaudeConfig(wt, { baseBranch: 'no-such-branch', configSource: CONFIG_SOURCE });
|
|
120
|
+
startupReport.finalize('ok');
|
|
121
|
+
const file = join(home, '.mx-agent', 'logs', 'startup', 'genwt2.jsonl');
|
|
122
|
+
const report = JSON.parse(readFileSync(file, 'utf-8').trim());
|
|
123
|
+
const warnings = report.entries.filter((e) => e.level === 'warning');
|
|
124
|
+
expect(warnings.length).toBeGreaterThan(0);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=start-report-generation-capture.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-report-generation-capture.test.js","sourceRoot":"","sources":["../../src/__tests__/start-report-generation-capture.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -177,10 +177,10 @@
|
|
|
177
177
|
"Bash(git push --force origin main *)",
|
|
178
178
|
"Bash(git push -f origin main)",
|
|
179
179
|
"Bash(git push -f origin main *)",
|
|
180
|
-
"Write(.claude/settings.json)",
|
|
181
180
|
"Edit(.claude/settings.json)",
|
|
182
|
-
"
|
|
183
|
-
"Edit(.claude
|
|
181
|
+
"Edit(.claude/hooks/**)",
|
|
182
|
+
"Edit(.claude.staging-*/**)",
|
|
183
|
+
"Edit(.claude.prev-*/**)"
|
|
184
184
|
],
|
|
185
185
|
"ask": [
|
|
186
186
|
"Bash(sudo *)",
|
package/dist/lib/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExC;AAwED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,IAAI,CAkEN;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAgC,GACzC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8E3E;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAyEP;AAqFD,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,IAAI,CA0GN;AAaD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA+F1D;AAmED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB"}
|
package/dist/lib/claude.js
CHANGED
|
@@ -11,6 +11,7 @@ import chalk from 'chalk';
|
|
|
11
11
|
import { BOOTSTRAP_SETTINGS_JSON } from './templates.js';
|
|
12
12
|
import { removeLock, updateChildPid } from './leader-lock.js';
|
|
13
13
|
import { startupReport, reportSuccess, reportWarning, reportDim } from './startup-report.js';
|
|
14
|
+
import { assessSettingsPosture } from './security-posture.js';
|
|
14
15
|
// ── Logging helpers ───────────────────────────────────────────────────
|
|
15
16
|
// These print exactly as before AND mirror a plain-text copy into the
|
|
16
17
|
// per-invocation StartupReport (#4350). They record with an EXACT level and
|
|
@@ -360,22 +361,46 @@ Today's date is ${new Date().toISOString().slice(0, 10)}.
|
|
|
360
361
|
* session. When a warn path is reached and `.claude/settings.json` is absent, throw
|
|
361
362
|
* a clear, actionable error so start.ts blocks the session start instead.
|
|
362
363
|
*
|
|
363
|
-
* If `.claude/settings.json` exists
|
|
364
|
-
* previously generated tree), behavior is
|
|
364
|
+
* If `.claude/settings.json` exists AND carries a usable security posture (the
|
|
365
|
+
* pre-Phase-4 committed backstop, or a previously generated tree), behavior is
|
|
366
|
+
* unchanged: warn and continue.
|
|
367
|
+
*
|
|
368
|
+
* KI-HARDSTOP-PRESENCE-NOT-VALIDITY: presence alone is not a usable backstop. A
|
|
369
|
+
* zero-byte, malformed, or deny-stripped settings.json satisfies `existsSync`
|
|
370
|
+
* but launches a guardrail-less session — exactly the failure mode the hard-stop
|
|
371
|
+
* exists to prevent. We now parse the file and assert a minimal posture (valid
|
|
372
|
+
* JSON, non-empty `permissions.deny`, and self-protection denies for
|
|
373
|
+
* `.claude/settings.json` + `.claude/hooks/**`, via `assessSettingsPosture`)
|
|
374
|
+
* before treating it as a fallback. An invalid backstop fails closed exactly as
|
|
375
|
+
* an absent one does.
|
|
365
376
|
*/
|
|
366
377
|
function assertExistingConfigOrHardStop(worktreePath, baseBranch, reason) {
|
|
367
378
|
const settingsPath = join(worktreePath, '.claude', 'settings.json');
|
|
368
|
-
|
|
369
|
-
|
|
379
|
+
let postureProblem = 'no existing .claude/settings.json present';
|
|
380
|
+
if (existsSync(settingsPath)) {
|
|
381
|
+
try {
|
|
382
|
+
postureProblem = assessSettingsPosture(readFileSync(settingsPath, 'utf-8'));
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
postureProblem = 'existing .claude/settings.json could not be read';
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
if (postureProblem === null)
|
|
389
|
+
return; // valid backstop to fall back on — warn-and-continue
|
|
390
|
+
// Fold the posture failure into the cause so the durable log and the thrown
|
|
391
|
+
// message say WHY the existing file was rejected (present-but-invalid vs absent).
|
|
392
|
+
const fullReason = existsSync(settingsPath)
|
|
393
|
+
? `${reason}; existing .claude/settings.json is not a usable backstop (${postureProblem})`
|
|
394
|
+
: reason;
|
|
370
395
|
// Fail-closed hard stop. Capture the reason into the StartupReport and
|
|
371
396
|
// finalize with 'hard_stop' BEFORE throwing (#4350), so the durable log has a
|
|
372
397
|
// terminal record even though the throw skips runStart's normal finalize.
|
|
373
398
|
// finalize is idempotent and never throws, so this is safe even if a caller
|
|
374
399
|
// already finalized; the process-exit safety net is the further backstop.
|
|
375
|
-
startupReport.record('error', `agent config generation failed and no
|
|
400
|
+
startupReport.record('error', `agent config generation failed and no usable .claude/ backstop is present — session cannot start (${fullReason})`, 'no-config-hard-stop');
|
|
376
401
|
startupReport.finalize('hard_stop');
|
|
377
402
|
throw new Error(`agent config generation failed and no existing .claude/ is present — this session cannot start safely.\n` +
|
|
378
|
-
` Cause: ${
|
|
403
|
+
` Cause: ${fullReason}.\n` +
|
|
379
404
|
` There is no committed or previously generated .claude/ to fall back on, so launching now would\n` +
|
|
380
405
|
` run without settings.json, hooks, or agent definitions (no guardrails).\n` +
|
|
381
406
|
` How to resolve:\n` +
|
package/dist/lib/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* security-posture.ts — shared self-protection permission-posture contract
|
|
3
|
+
* (#4304 Phase 4 flip).
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for the agent-config self-protection deny rules that
|
|
6
|
+
* every shipped/backstop settings.json must carry. Consumed by BOTH:
|
|
7
|
+
* - the generation-correctness CI gate (config-generation-gate.test.ts), which
|
|
8
|
+
* asserts the SHIPPED source settings.json carries the corrected rules and no
|
|
9
|
+
* unmatched file-path forms, and
|
|
10
|
+
* - syncClaudeConfig's no-config hard-stop (claude.ts), which parses an existing
|
|
11
|
+
* `.claude/settings.json` backstop and refuses to fall back on it unless it
|
|
12
|
+
* carries a minimal security posture (KI-HARDSTOP-PRESENCE-NOT-VALIDITY).
|
|
13
|
+
*
|
|
14
|
+
* SYNTAX — Edit(path) covers all file-editing tools (Claude Code v2.1.210+):
|
|
15
|
+
* File-path permission checks match only `Edit(path)` and `Read(path)` rules.
|
|
16
|
+
* An `Edit(path)` deny covers EVERY file-editing tool — Write, MultiEdit,
|
|
17
|
+
* NotebookEdit. A `Write(path)` / `NotebookEdit(path)` / `Glob(path)` deny is
|
|
18
|
+
* ACCEPTED BUT NEVER MATCHED, and Claude Code warns at startup for each such
|
|
19
|
+
* rule ("Write(...) is not matched by file permission checks — only Edit(path)
|
|
20
|
+
* rules are. Use Edit(...) instead."). The v2.56 online canary printed exactly
|
|
21
|
+
* that warning for `Write(.claude/settings.json)`. So the corrected
|
|
22
|
+
* self-protection denies are Edit-only; the former redundant Write(...) twins
|
|
23
|
+
* were dropped in the v2.57 flip (canary syntax fix, KI item 3c).
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Paths that MUST be write-protected in every settings.json. Edit(path) covers
|
|
27
|
+
* Write/MultiEdit/NotebookEdit, so one Edit rule per path is the full protection.
|
|
28
|
+
*
|
|
29
|
+
* The `.claude.staging-*` / `.claude.prev-*` siblings are the generator's
|
|
30
|
+
* atomic-swap scratch dirs (KI-GENERATOR-SWAP-SIBLINGS-UNGUARDED): a failed
|
|
31
|
+
* prev-cleanup can leave stale settings.json + hooks copies at an unguarded
|
|
32
|
+
* sibling path. Denying Write/Edit there closes the tool-write surface on them
|
|
33
|
+
* (same-UID residual, defense-in-depth — not a Bash-level control).
|
|
34
|
+
*/
|
|
35
|
+
export declare const SELF_PROTECTED_PATHS: readonly [".claude/settings.json", ".claude/hooks/**", ".claude.staging-*/**", ".claude.prev-*/**"];
|
|
36
|
+
/**
|
|
37
|
+
* Core paths whose write-protection a FALLBACK backstop must carry to be treated
|
|
38
|
+
* as usable by the no-config hard-stop. The staging/prev siblings are NOT
|
|
39
|
+
* required here: they are new defense-in-depth added in the flip, and a valid
|
|
40
|
+
* pre-flip generated backstop predates them — requiring them would fail-closed on
|
|
41
|
+
* an otherwise-good backstop. Coverage of the siblings is enforced on the SHIPPED
|
|
42
|
+
* source by the CI gate, not on historical on-disk backstops.
|
|
43
|
+
*/
|
|
44
|
+
export declare const BACKSTOP_REQUIRED_PATHS: readonly string[];
|
|
45
|
+
/** The exact Edit-form deny rules the SHIPPED source settings.json must carry. */
|
|
46
|
+
export declare const REQUIRED_SOURCE_DENIES: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* Return the deny entries that use an unmatched file-path form
|
|
49
|
+
* (`Write(path)` / `NotebookEdit(path)` / `Glob(path)`) — the exact forms Claude
|
|
50
|
+
* Code warns about at startup. A bare tool-name rule with NO parentheses (e.g.
|
|
51
|
+
* `Write`) is fine (matches the tool everywhere, no warning) and is not flagged.
|
|
52
|
+
*/
|
|
53
|
+
export declare function unmatchedFilePathDenies(denyList: readonly string[]): string[];
|
|
54
|
+
/**
|
|
55
|
+
* True if `denyList` write-protects `path` in EITHER the current Edit form or the
|
|
56
|
+
* legacy Write form. Lenient on FORM (an older generated backstop that still
|
|
57
|
+
* carries the Write(...) twin validates) but strict on COVERAGE.
|
|
58
|
+
*/
|
|
59
|
+
export declare function pathIsWriteProtected(denyList: readonly string[], path: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Parse a settings.json string and assert it provides a usable security backstop:
|
|
62
|
+
* - parses as JSON,
|
|
63
|
+
* - has a non-empty `permissions.deny` array,
|
|
64
|
+
* - write-protects every BACKSTOP_REQUIRED_PATHS entry (Edit or Write form).
|
|
65
|
+
* Returns a human-readable reason on FAILURE, or null when the posture is usable.
|
|
66
|
+
* Never throws.
|
|
67
|
+
*/
|
|
68
|
+
export declare function assessSettingsPosture(raw: string): string | null;
|
|
69
|
+
//# sourceMappingURL=security-posture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-posture.d.ts","sourceRoot":"","sources":["../../src/lib/security-posture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,qGAKvB,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAGpD,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EACL,CAAC;AAKhD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI7E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGvF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBhE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* security-posture.ts — shared self-protection permission-posture contract
|
|
3
|
+
* (#4304 Phase 4 flip).
|
|
4
|
+
*
|
|
5
|
+
* Single source of truth for the agent-config self-protection deny rules that
|
|
6
|
+
* every shipped/backstop settings.json must carry. Consumed by BOTH:
|
|
7
|
+
* - the generation-correctness CI gate (config-generation-gate.test.ts), which
|
|
8
|
+
* asserts the SHIPPED source settings.json carries the corrected rules and no
|
|
9
|
+
* unmatched file-path forms, and
|
|
10
|
+
* - syncClaudeConfig's no-config hard-stop (claude.ts), which parses an existing
|
|
11
|
+
* `.claude/settings.json` backstop and refuses to fall back on it unless it
|
|
12
|
+
* carries a minimal security posture (KI-HARDSTOP-PRESENCE-NOT-VALIDITY).
|
|
13
|
+
*
|
|
14
|
+
* SYNTAX — Edit(path) covers all file-editing tools (Claude Code v2.1.210+):
|
|
15
|
+
* File-path permission checks match only `Edit(path)` and `Read(path)` rules.
|
|
16
|
+
* An `Edit(path)` deny covers EVERY file-editing tool — Write, MultiEdit,
|
|
17
|
+
* NotebookEdit. A `Write(path)` / `NotebookEdit(path)` / `Glob(path)` deny is
|
|
18
|
+
* ACCEPTED BUT NEVER MATCHED, and Claude Code warns at startup for each such
|
|
19
|
+
* rule ("Write(...) is not matched by file permission checks — only Edit(path)
|
|
20
|
+
* rules are. Use Edit(...) instead."). The v2.56 online canary printed exactly
|
|
21
|
+
* that warning for `Write(.claude/settings.json)`. So the corrected
|
|
22
|
+
* self-protection denies are Edit-only; the former redundant Write(...) twins
|
|
23
|
+
* were dropped in the v2.57 flip (canary syntax fix, KI item 3c).
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Paths that MUST be write-protected in every settings.json. Edit(path) covers
|
|
27
|
+
* Write/MultiEdit/NotebookEdit, so one Edit rule per path is the full protection.
|
|
28
|
+
*
|
|
29
|
+
* The `.claude.staging-*` / `.claude.prev-*` siblings are the generator's
|
|
30
|
+
* atomic-swap scratch dirs (KI-GENERATOR-SWAP-SIBLINGS-UNGUARDED): a failed
|
|
31
|
+
* prev-cleanup can leave stale settings.json + hooks copies at an unguarded
|
|
32
|
+
* sibling path. Denying Write/Edit there closes the tool-write surface on them
|
|
33
|
+
* (same-UID residual, defense-in-depth — not a Bash-level control).
|
|
34
|
+
*/
|
|
35
|
+
export const SELF_PROTECTED_PATHS = [
|
|
36
|
+
'.claude/settings.json',
|
|
37
|
+
'.claude/hooks/**',
|
|
38
|
+
'.claude.staging-*/**',
|
|
39
|
+
'.claude.prev-*/**',
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* Core paths whose write-protection a FALLBACK backstop must carry to be treated
|
|
43
|
+
* as usable by the no-config hard-stop. The staging/prev siblings are NOT
|
|
44
|
+
* required here: they are new defense-in-depth added in the flip, and a valid
|
|
45
|
+
* pre-flip generated backstop predates them — requiring them would fail-closed on
|
|
46
|
+
* an otherwise-good backstop. Coverage of the siblings is enforced on the SHIPPED
|
|
47
|
+
* source by the CI gate, not on historical on-disk backstops.
|
|
48
|
+
*/
|
|
49
|
+
export const BACKSTOP_REQUIRED_PATHS = [
|
|
50
|
+
'.claude/settings.json',
|
|
51
|
+
'.claude/hooks/**',
|
|
52
|
+
];
|
|
53
|
+
/** The exact Edit-form deny rules the SHIPPED source settings.json must carry. */
|
|
54
|
+
export const REQUIRED_SOURCE_DENIES = SELF_PROTECTED_PATHS.map((p) => `Edit(${p})`);
|
|
55
|
+
/** Tool prefixes whose `Tool(path)` deny form is accepted but never matched (warns). */
|
|
56
|
+
const UNMATCHED_FILE_TOOL_PREFIXES = ['Write', 'NotebookEdit', 'Glob'];
|
|
57
|
+
/**
|
|
58
|
+
* Return the deny entries that use an unmatched file-path form
|
|
59
|
+
* (`Write(path)` / `NotebookEdit(path)` / `Glob(path)`) — the exact forms Claude
|
|
60
|
+
* Code warns about at startup. A bare tool-name rule with NO parentheses (e.g.
|
|
61
|
+
* `Write`) is fine (matches the tool everywhere, no warning) and is not flagged.
|
|
62
|
+
*/
|
|
63
|
+
export function unmatchedFilePathDenies(denyList) {
|
|
64
|
+
return denyList.filter((d) => UNMATCHED_FILE_TOOL_PREFIXES.some((t) => d.startsWith(`${t}(`)));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* True if `denyList` write-protects `path` in EITHER the current Edit form or the
|
|
68
|
+
* legacy Write form. Lenient on FORM (an older generated backstop that still
|
|
69
|
+
* carries the Write(...) twin validates) but strict on COVERAGE.
|
|
70
|
+
*/
|
|
71
|
+
export function pathIsWriteProtected(denyList, path) {
|
|
72
|
+
const deny = new Set(denyList);
|
|
73
|
+
return deny.has(`Edit(${path})`) || deny.has(`Write(${path})`);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse a settings.json string and assert it provides a usable security backstop:
|
|
77
|
+
* - parses as JSON,
|
|
78
|
+
* - has a non-empty `permissions.deny` array,
|
|
79
|
+
* - write-protects every BACKSTOP_REQUIRED_PATHS entry (Edit or Write form).
|
|
80
|
+
* Returns a human-readable reason on FAILURE, or null when the posture is usable.
|
|
81
|
+
* Never throws.
|
|
82
|
+
*/
|
|
83
|
+
export function assessSettingsPosture(raw) {
|
|
84
|
+
let parsed;
|
|
85
|
+
try {
|
|
86
|
+
parsed = JSON.parse(raw);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return 'settings.json is not valid JSON';
|
|
90
|
+
}
|
|
91
|
+
const deny = parsed?.permissions?.deny;
|
|
92
|
+
if (!Array.isArray(deny) || deny.length === 0) {
|
|
93
|
+
return 'permissions.deny is missing or empty';
|
|
94
|
+
}
|
|
95
|
+
const denyStrs = deny.filter((d) => typeof d === 'string');
|
|
96
|
+
const missing = BACKSTOP_REQUIRED_PATHS.filter((p) => !pathIsWriteProtected(denyStrs, p));
|
|
97
|
+
if (missing.length > 0) {
|
|
98
|
+
return `missing self-protection deny for: ${missing.join(', ')}`;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=security-posture.js.map
|