trace-to-skill 0.1.53 → 0.1.55
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/README.md +13 -3
- package/dist/src/cli.js +38 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/configAudit.d.ts +32 -0
- package/dist/src/configAudit.js +358 -0
- package/dist/src/configAudit.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/sessionAudit.d.ts +49 -0
- package/dist/src/sessionAudit.js +272 -0
- package/dist/src/sessionAudit.js.map +1 -0
- package/docs/CODEX_ISSUE_MAP.md +5 -1
- package/docs/DISCOVERY.md +9 -2
- package/docs/OPENAI_OSS_BRIEF.md +2 -2
- package/docs/USE_CASES.md +8 -1
- package/llms.txt +12 -2
- package/package.json +6 -1
- package/schemas/config-audit-result.schema.json +125 -0
- package/schemas/session-audit-result.schema.json +175 -0
package/README.md
CHANGED
|
@@ -25,6 +25,8 @@ npx trace-to-skill oss-brief .
|
|
|
25
25
|
npx trace-to-skill scorecard-comment . --dry-run
|
|
26
26
|
npx trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
27
27
|
npx trace-to-skill guard-patch ./change.patch --root .
|
|
28
|
+
npx trace-to-skill session-audit ~/.codex --format json
|
|
29
|
+
npx trace-to-skill config-audit ~/.codex --format json
|
|
28
30
|
npx trace-to-skill comment ./runs --dry-run
|
|
29
31
|
npx trace-to-skill compare --before ./runs/before --after ./runs/after
|
|
30
32
|
```
|
|
@@ -49,6 +51,8 @@ Use it when you need to:
|
|
|
49
51
|
- **Harden agent instructions:** run `trace-to-skill lint-agents .` to catch missing `AGENTS.md`, conflicting tool instructions, missing includes, nested instruction drift, encoding issues, and risky MCP config.
|
|
50
52
|
- **Protect agent context:** run `trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"` before feeding issue, PR, comment, discussion, check-run, or commit text into an agent.
|
|
51
53
|
- **Prevent unsafe patch overwrites:** run `trace-to-skill guard-patch ./change.patch --root .` before applying generated patches so `*** Add File` cannot silently replace an existing file or symlink target.
|
|
54
|
+
- **Audit local Codex session history:** run `trace-to-skill session-audit ~/.codex --format json` to summarize rollout JSONL sizes, huge lines, parse errors, state files, and short `session_index.jsonl` evidence without publishing private transcripts.
|
|
55
|
+
- **Audit Codex config drift:** run `trace-to-skill config-audit ~/.codex --format json` to summarize model pins, sandbox/approval posture, Windows elevated sandbox mode, missing permission profiles, plugin cache drift, and MCP approval sprawl.
|
|
52
56
|
- **Share failed traces safely:** run `trace-to-skill redact ./runs --output redacted-runs` before publishing anonymized failure fixtures.
|
|
53
57
|
- **Catch sensitive file access:** run `trace-to-skill analyze ./runs` when an agent trace includes `.env`, private keys, `.npmrc`, cloud credentials, local databases, or production secret manifests.
|
|
54
58
|
- **Report remote compact failures:** run `trace-to-skill codex-report ./runs` when `/compact` or auto-compaction fails with `responses/compact` timeouts, stream disconnects, provider timeout workarounds, or long-thread recovery loss.
|
|
@@ -91,6 +95,8 @@ Open-source maintainers do not need more AI-generated noise. They need agents th
|
|
|
91
95
|
- Did Codex Desktop on Windows expose `rg`, `node_repl`, Browser, Chrome, or Computer Use helper paths that were discoverable but not executable?
|
|
92
96
|
- Did an `apply_patch` create operation actually overwrite an existing file or symlink target?
|
|
93
97
|
- Can a generated patch be guarded before it touches the workspace?
|
|
98
|
+
- Which local Codex rollout JSONL or `session_index.jsonl` files make `codex resume` or Desktop history sluggish?
|
|
99
|
+
- Which `config.toml` setting explains a sandbox, approval, plugin, model, or Preferences save regression?
|
|
94
100
|
- Did Codex sandbox setup or workspace permissions block every tool call?
|
|
95
101
|
- Did quota accounting, account switching, or reset timing contradict the runtime usage-limit error?
|
|
96
102
|
- Did an MCP tool appear in `tools/list` but fail at Codex runtime because approval, namespace routing, or stdio lifecycle broke?
|
|
@@ -214,6 +220,8 @@ trace-to-skill demo --list
|
|
|
214
220
|
trace-to-skill demo latency-regression
|
|
215
221
|
trace-to-skill demo patch-overwrite
|
|
216
222
|
trace-to-skill guard-patch ./change.patch --root .
|
|
223
|
+
trace-to-skill session-audit ~/.codex --format json
|
|
224
|
+
trace-to-skill config-audit ~/.codex --format json
|
|
217
225
|
trace-to-skill demo --format json
|
|
218
226
|
```
|
|
219
227
|
|
|
@@ -376,6 +384,8 @@ Stable machine-readable contracts are published with the npm package and release
|
|
|
376
384
|
- [`schemas/scorecard-result.schema.json`](schemas/scorecard-result.schema.json) describes `trace-to-skill scorecard --format json`.
|
|
377
385
|
- [`schemas/oss-brief-result.schema.json`](schemas/oss-brief-result.schema.json) describes `trace-to-skill oss-brief --format json`.
|
|
378
386
|
- [`schemas/patch-guard-result.schema.json`](schemas/patch-guard-result.schema.json) describes `trace-to-skill guard-patch --format json`.
|
|
387
|
+
- [`schemas/config-audit-result.schema.json`](schemas/config-audit-result.schema.json) describes `trace-to-skill config-audit --format json`.
|
|
388
|
+
- [`schemas/session-audit-result.schema.json`](schemas/session-audit-result.schema.json) describes `trace-to-skill session-audit --format json`.
|
|
379
389
|
|
|
380
390
|
These schemas let downstream Codex workflows, dashboards, and CI bots consume reports without scraping Markdown.
|
|
381
391
|
|
|
@@ -407,7 +417,7 @@ jobs:
|
|
|
407
417
|
issues: write
|
|
408
418
|
steps:
|
|
409
419
|
- uses: actions/checkout@v5
|
|
410
|
-
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.
|
|
420
|
+
- uses: grnbtqdbyx-create/trace-to-skill@v0.1.55
|
|
411
421
|
with:
|
|
412
422
|
mode: all
|
|
413
423
|
doctor-threshold: "85"
|
|
@@ -456,7 +466,7 @@ Composite action usage:
|
|
|
456
466
|
|
|
457
467
|
```yaml
|
|
458
468
|
- id: trace-to-skill
|
|
459
|
-
uses: grnbtqdbyx-create/trace-to-skill@v0.1.
|
|
469
|
+
uses: grnbtqdbyx-create/trace-to-skill@v0.1.55
|
|
460
470
|
with:
|
|
461
471
|
mode: all
|
|
462
472
|
doctor-threshold: "85"
|
|
@@ -498,7 +508,7 @@ Action outputs:
|
|
|
498
508
|
|
|
499
509
|
By default, generated reports are also appended to the GitHub Actions Job Summary. Set `job-summary: "false"` to disable that UI output.
|
|
500
510
|
|
|
501
|
-
Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.
|
|
511
|
+
Tagged Action releases build and run the CLI from `$GITHUB_ACTION_PATH`, so a workflow pinned to a release tag such as `@v0.1.55` executes that release's checked-out source instead of pulling the default branch at runtime.
|
|
502
512
|
|
|
503
513
|
## Codex Skill
|
|
504
514
|
|
package/dist/src/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { writeFile } from "node:fs/promises";
|
|
|
3
3
|
import { lintAgents, renderAgentsLintMarkdown } from "./agentsLint.js";
|
|
4
4
|
import { analyzeTargets } from "./analyze.js";
|
|
5
5
|
import { renderBenchmarkMarkdown, runBenchmark } from "./benchmark.js";
|
|
6
|
+
import { auditCodexConfig, renderConfigAuditMarkdown } from "./configAudit.js";
|
|
6
7
|
import { listDemoScenarios, renderDemoMarkdown, renderDemoScenarioList, runDemo } from "./demo.js";
|
|
7
8
|
import { doctorRepo } from "./doctor.js";
|
|
8
9
|
import { compareAnalyses, evaluate } from "./eval.js";
|
|
@@ -14,6 +15,7 @@ import { guardPatchFile, renderPatchGuardMarkdown } from "./patchGuard.js";
|
|
|
14
15
|
import { redactTargets } from "./redact.js";
|
|
15
16
|
import { renderAgentsRules, renderCodexIssueReport, renderComparison, renderDoctorMarkdown, renderDoctorPrComment, renderMarkdown, renderPrComment, renderSarif, renderSkill } from "./report.js";
|
|
16
17
|
import { renderScorecardMarkdown, renderScorecardPrComment, runScorecard } from "./scorecard.js";
|
|
18
|
+
import { auditCodexSessions, renderSessionAuditMarkdown } from "./sessionAudit.js";
|
|
17
19
|
async function main() {
|
|
18
20
|
const parsed = parseArgs(process.argv.slice(2));
|
|
19
21
|
if (parsed.flags.help || parsed.command === "help") {
|
|
@@ -154,6 +156,25 @@ async function main() {
|
|
|
154
156
|
process.exitCode = result.status === "pass" ? 0 : 1;
|
|
155
157
|
return;
|
|
156
158
|
}
|
|
159
|
+
if (parsed.command === "session-audit") {
|
|
160
|
+
const result = await auditCodexSessions(parsed.targets[0] ?? "~/.codex", {
|
|
161
|
+
largeFileBytes: byteFlag(parsed.flags["large-mb"], 1024 * 1024),
|
|
162
|
+
hugeLineBytes: byteFlag(parsed.flags["huge-line-kb"], 1024)
|
|
163
|
+
});
|
|
164
|
+
const format = String(parsed.flags.format ?? "markdown");
|
|
165
|
+
const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderSessionAuditMarkdown(result);
|
|
166
|
+
await writeOutput(output, parsed.flags.output);
|
|
167
|
+
process.exitCode = result.status === "fail" ? 1 : 0;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (parsed.command === "config-audit") {
|
|
171
|
+
const result = await auditCodexConfig(parsed.targets[0] ?? "~/.codex");
|
|
172
|
+
const format = String(parsed.flags.format ?? "markdown");
|
|
173
|
+
const output = format === "json" ? `${JSON.stringify(result, null, 2)}\n` : renderConfigAuditMarkdown(result);
|
|
174
|
+
await writeOutput(output, parsed.flags.output);
|
|
175
|
+
process.exitCode = result.status === "fail" ? 1 : 0;
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
157
178
|
if (parsed.command === "comment") {
|
|
158
179
|
const result = await analyzeTargets(parsed.targets);
|
|
159
180
|
const body = renderPrComment(result);
|
|
@@ -244,6 +265,19 @@ function numberFlag(value) {
|
|
|
244
265
|
}
|
|
245
266
|
return parsed;
|
|
246
267
|
}
|
|
268
|
+
function byteFlag(value, multiplier) {
|
|
269
|
+
if (value === undefined) {
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
if (typeof value !== "string" || !/^[0-9]{1,6}$/.test(value)) {
|
|
273
|
+
throw new Error("byte threshold flags must be positive integers");
|
|
274
|
+
}
|
|
275
|
+
const parsed = Number(value);
|
|
276
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
277
|
+
throw new Error("byte threshold flags must be positive integers");
|
|
278
|
+
}
|
|
279
|
+
return parsed * multiplier;
|
|
280
|
+
}
|
|
247
281
|
function doctorPassed(result, threshold) {
|
|
248
282
|
if (result.checks.some((check) => check.status === "fail")) {
|
|
249
283
|
return false;
|
|
@@ -314,6 +348,8 @@ Usage:
|
|
|
314
348
|
trace-to-skill oss-brief [repo-dir] [--threshold 85] [--format markdown|json] [--output docs/OPENAI_OSS_BRIEF.md]
|
|
315
349
|
trace-to-skill guard-github-event [event.json] [--threshold 80] [--format markdown|json] [--output report.md]
|
|
316
350
|
trace-to-skill guard-patch <patch-file> [--root repo-dir] [--format markdown|json] [--output report.md]
|
|
351
|
+
trace-to-skill session-audit [codex-home-or-sessions-dir] [--large-mb 10] [--huge-line-kb 512] [--format markdown|json]
|
|
352
|
+
trace-to-skill config-audit [codex-home-or-config.toml] [--format markdown|json]
|
|
317
353
|
trace-to-skill comment <trace-file-or-dir> [--dry-run] [--token $GITHUB_TOKEN]
|
|
318
354
|
trace-to-skill compare --before <old-run> --after <new-run> [--format markdown|json]
|
|
319
355
|
trace-to-skill doctor [repo-dir] [--threshold 85] [--format markdown|json|comment] [--output report.md]
|
|
@@ -335,6 +371,8 @@ Examples:
|
|
|
335
371
|
trace-to-skill oss-brief . --output docs/OPENAI_OSS_BRIEF.md
|
|
336
372
|
trace-to-skill guard-github-event "$GITHUB_EVENT_PATH"
|
|
337
373
|
trace-to-skill guard-patch ./change.patch --root .
|
|
374
|
+
trace-to-skill session-audit ~/.codex --format json
|
|
375
|
+
trace-to-skill config-audit ~/.codex --format json
|
|
338
376
|
trace-to-skill comment ./runs
|
|
339
377
|
trace-to-skill compare --before ./runs/before --after ./runs/after
|
|
340
378
|
trace-to-skill doctor . --threshold 85
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type ConfigAuditStatus = "pass" | "warn" | "fail";
|
|
2
|
+
export type ConfigAuditSeverity = "warning" | "error";
|
|
3
|
+
export interface ConfigAuditFinding {
|
|
4
|
+
severity: ConfigAuditSeverity;
|
|
5
|
+
kind: "missing_config" | "model_pin" | "danger_full_access" | "windows_elevated_sandbox" | "default_permissions_missing" | "deprecated_codex_hooks" | "machine_local_project_state" | "plugin_cache_missing" | "mcp_approval_sprawl";
|
|
6
|
+
line?: number;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ConfigAuditResult {
|
|
10
|
+
generatedAt: string;
|
|
11
|
+
target: string;
|
|
12
|
+
configPath: string;
|
|
13
|
+
status: ConfigAuditStatus;
|
|
14
|
+
summary: {
|
|
15
|
+
exists: boolean;
|
|
16
|
+
sizeBytes: number;
|
|
17
|
+
topLevelKeys: string[];
|
|
18
|
+
sections: string[];
|
|
19
|
+
mcpServers: number;
|
|
20
|
+
pluginSections: number;
|
|
21
|
+
};
|
|
22
|
+
values: {
|
|
23
|
+
model?: string;
|
|
24
|
+
approvalPolicy?: string;
|
|
25
|
+
sandboxMode?: string;
|
|
26
|
+
windowsSandbox?: string;
|
|
27
|
+
defaultPermissions?: string;
|
|
28
|
+
};
|
|
29
|
+
findings: ConfigAuditFinding[];
|
|
30
|
+
}
|
|
31
|
+
export declare function auditCodexConfig(target?: string): Promise<ConfigAuditResult>;
|
|
32
|
+
export declare function renderConfigAuditMarkdown(result: ConfigAuditResult): string;
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export async function auditCodexConfig(target = "~/.codex") {
|
|
5
|
+
const resolvedTarget = path.resolve(expandHome(target));
|
|
6
|
+
const configPath = await resolveConfigPath(resolvedTarget);
|
|
7
|
+
try {
|
|
8
|
+
const content = await fs.readFile(configPath, "utf8");
|
|
9
|
+
const fileStat = await fs.stat(configPath);
|
|
10
|
+
const entries = parseTomlEntries(content);
|
|
11
|
+
const findings = await collectFindings(configPath, entries);
|
|
12
|
+
const sections = entries.filter((entry) => entry.section && !entry.key).map((entry) => entry.section);
|
|
13
|
+
const topLevelKeys = entries.filter((entry) => !entry.section && entry.key).map((entry) => entry.key);
|
|
14
|
+
return {
|
|
15
|
+
generatedAt: new Date().toISOString(),
|
|
16
|
+
target: resolvedTarget,
|
|
17
|
+
configPath,
|
|
18
|
+
status: statusFor(findings),
|
|
19
|
+
summary: {
|
|
20
|
+
exists: true,
|
|
21
|
+
sizeBytes: fileStat.size,
|
|
22
|
+
topLevelKeys,
|
|
23
|
+
sections,
|
|
24
|
+
mcpServers: sections.filter((section) => section.startsWith("mcp_servers.") || section.startsWith("mcpServers.")).length,
|
|
25
|
+
pluginSections: sections.filter((section) => section.startsWith("plugins.")).length
|
|
26
|
+
},
|
|
27
|
+
values: {
|
|
28
|
+
model: stringValue(findAssignment(entries, undefined, "model")?.value),
|
|
29
|
+
approvalPolicy: stringValue(findAssignment(entries, undefined, "approval_policy")?.value),
|
|
30
|
+
sandboxMode: stringValue(findAssignment(entries, undefined, "sandbox_mode")?.value),
|
|
31
|
+
windowsSandbox: stringValue(findAssignment(entries, "windows", "sandbox")?.value),
|
|
32
|
+
defaultPermissions: stringValue(findAssignment(entries, undefined, "default_permissions")?.value)
|
|
33
|
+
},
|
|
34
|
+
findings
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const missing = error.code === "ENOENT";
|
|
39
|
+
const findings = [{
|
|
40
|
+
severity: missing ? "warning" : "error",
|
|
41
|
+
kind: "missing_config",
|
|
42
|
+
message: missing
|
|
43
|
+
? "Codex config.toml was not found at the resolved target."
|
|
44
|
+
: `Codex config.toml could not be read: ${error.message}`
|
|
45
|
+
}];
|
|
46
|
+
return {
|
|
47
|
+
generatedAt: new Date().toISOString(),
|
|
48
|
+
target: resolvedTarget,
|
|
49
|
+
configPath,
|
|
50
|
+
status: statusFor(findings),
|
|
51
|
+
summary: {
|
|
52
|
+
exists: false,
|
|
53
|
+
sizeBytes: 0,
|
|
54
|
+
topLevelKeys: [],
|
|
55
|
+
sections: [],
|
|
56
|
+
mcpServers: 0,
|
|
57
|
+
pluginSections: 0
|
|
58
|
+
},
|
|
59
|
+
values: {},
|
|
60
|
+
findings
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function renderConfigAuditMarkdown(result) {
|
|
65
|
+
const lines = [
|
|
66
|
+
"# trace-to-skill Codex Config Audit",
|
|
67
|
+
"",
|
|
68
|
+
`Status: **${result.status}**`,
|
|
69
|
+
"",
|
|
70
|
+
`Target: \`${result.target}\``,
|
|
71
|
+
`Config: \`${result.configPath}\``,
|
|
72
|
+
`Exists: ${result.summary.exists ? "yes" : "no"}`,
|
|
73
|
+
`Size: ${result.summary.sizeBytes} bytes`,
|
|
74
|
+
`Top-level keys: ${result.summary.topLevelKeys.length > 0 ? result.summary.topLevelKeys.join(", ") : "none"}`,
|
|
75
|
+
`Sections: ${result.summary.sections.length}`,
|
|
76
|
+
`MCP servers: ${result.summary.mcpServers}`,
|
|
77
|
+
`Plugin sections: ${result.summary.pluginSections}`,
|
|
78
|
+
"",
|
|
79
|
+
"## Effective Values",
|
|
80
|
+
"",
|
|
81
|
+
`- model: ${formatValue(result.values.model)}`,
|
|
82
|
+
`- approval_policy: ${formatValue(result.values.approvalPolicy)}`,
|
|
83
|
+
`- sandbox_mode: ${formatValue(result.values.sandboxMode)}`,
|
|
84
|
+
`- [windows].sandbox: ${formatValue(result.values.windowsSandbox)}`,
|
|
85
|
+
`- default_permissions: ${formatValue(result.values.defaultPermissions)}`,
|
|
86
|
+
"",
|
|
87
|
+
"## Findings",
|
|
88
|
+
""
|
|
89
|
+
];
|
|
90
|
+
if (result.findings.length === 0) {
|
|
91
|
+
lines.push("No Codex config findings detected.", "");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
for (const finding of result.findings) {
|
|
95
|
+
const location = finding.line ? ` line ${finding.line}` : "";
|
|
96
|
+
lines.push(`- **${finding.severity}** ${finding.kind}${location}: ${finding.message}`);
|
|
97
|
+
}
|
|
98
|
+
lines.push("");
|
|
99
|
+
}
|
|
100
|
+
lines.push("Suggested next step:", "", "- Attach this report to config, sandbox, approval, or plugin-runtime issues instead of pasting raw config with secrets.", "- Back up `~/.codex/config.toml` before manually changing sandbox, permission, model, MCP, or plugin settings.", "");
|
|
101
|
+
return lines.join("\n");
|
|
102
|
+
}
|
|
103
|
+
async function resolveConfigPath(target) {
|
|
104
|
+
try {
|
|
105
|
+
const targetStat = await fs.stat(target);
|
|
106
|
+
if (targetStat.isDirectory()) {
|
|
107
|
+
return path.join(target, "config.toml");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
if (path.basename(target) !== "config.toml" && !target.endsWith(".toml")) {
|
|
112
|
+
return path.join(target, "config.toml");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return target;
|
|
116
|
+
}
|
|
117
|
+
async function collectFindings(configPath, entries) {
|
|
118
|
+
const findings = [];
|
|
119
|
+
const model = findAssignment(entries, undefined, "model");
|
|
120
|
+
const sandboxMode = findAssignment(entries, undefined, "sandbox_mode");
|
|
121
|
+
const windowsSandbox = findAssignment(entries, "windows", "sandbox");
|
|
122
|
+
const defaultPermissions = findAssignment(entries, undefined, "default_permissions");
|
|
123
|
+
const permissionProfiles = collectPermissionProfiles(entries);
|
|
124
|
+
const sections = entries.filter((entry) => entry.section && !entry.key).map((entry) => entry.section);
|
|
125
|
+
if (model && typeof model.value === "string") {
|
|
126
|
+
findings.push({
|
|
127
|
+
severity: "warning",
|
|
128
|
+
kind: "model_pin",
|
|
129
|
+
line: model.line,
|
|
130
|
+
message: `model is pinned to "${model.value}"; include this in reports about update, routing, latency, or unavailable-model regressions.`
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (sandboxMode?.value === "danger-full-access") {
|
|
134
|
+
findings.push({
|
|
135
|
+
severity: "warning",
|
|
136
|
+
kind: "danger_full_access",
|
|
137
|
+
line: sandboxMode.line,
|
|
138
|
+
message: "sandbox_mode is danger-full-access; this is useful evidence for approval/sandbox reports but broad for daily OSS maintenance."
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (windowsSandbox?.value === "elevated") {
|
|
142
|
+
findings.push({
|
|
143
|
+
severity: "warning",
|
|
144
|
+
kind: "windows_elevated_sandbox",
|
|
145
|
+
line: windowsSandbox.line,
|
|
146
|
+
message: "[windows].sandbox is elevated; recent Codex reports link this mode to node_repl or sandbox setup refresh failures on some Windows installs."
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (defaultPermissions && typeof defaultPermissions.value === "string" && !permissionProfiles.has(defaultPermissions.value)) {
|
|
150
|
+
findings.push({
|
|
151
|
+
severity: "error",
|
|
152
|
+
kind: "default_permissions_missing",
|
|
153
|
+
line: defaultPermissions.line,
|
|
154
|
+
message: `default_permissions references missing permissions profile "${defaultPermissions.value}".`
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
for (const entry of entries) {
|
|
158
|
+
if (entry.section === "features" && entry.key === "codex_hooks") {
|
|
159
|
+
findings.push({
|
|
160
|
+
severity: "warning",
|
|
161
|
+
kind: "deprecated_codex_hooks",
|
|
162
|
+
line: entry.line,
|
|
163
|
+
message: "deprecated [features].codex_hooks is present; use [features].hooks instead."
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (entry.section?.startsWith("projects.") && entry.key === "trusted_level") {
|
|
167
|
+
findings.push({
|
|
168
|
+
severity: "warning",
|
|
169
|
+
kind: "machine_local_project_state",
|
|
170
|
+
line: entry.line,
|
|
171
|
+
message: "projects.* trusted_level is machine-local state; syncing it can cause confusing trust drift across machines."
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const approvalModeEntries = entries.filter((entry) => entry.section?.includes(".tools.") && entry.key === "approval_mode");
|
|
176
|
+
if (approvalModeEntries.length >= 20) {
|
|
177
|
+
findings.push({
|
|
178
|
+
severity: "warning",
|
|
179
|
+
kind: "mcp_approval_sprawl",
|
|
180
|
+
line: approvalModeEntries[0]?.line,
|
|
181
|
+
message: `${approvalModeEntries.length} per-tool MCP approval_mode entries found; this matches reports where MCP approval config becomes hard to maintain.`
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
for (const section of sections) {
|
|
185
|
+
if (section.startsWith("projects.") && /\/|\\|:/.test(section)) {
|
|
186
|
+
findings.push({
|
|
187
|
+
severity: "warning",
|
|
188
|
+
kind: "machine_local_project_state",
|
|
189
|
+
line: findSectionLine(entries, section),
|
|
190
|
+
message: `project section appears to contain a machine-local path: [${section}]`
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
findings.push(...(await findMissingPluginCaches(configPath, entries)));
|
|
195
|
+
return findings;
|
|
196
|
+
}
|
|
197
|
+
async function findMissingPluginCaches(configPath, entries) {
|
|
198
|
+
const codexHome = path.dirname(configPath);
|
|
199
|
+
const findings = [];
|
|
200
|
+
const pluginSections = entries.filter((entry) => entry.section?.startsWith("plugins.") && !entry.key);
|
|
201
|
+
for (const sectionEntry of pluginSections) {
|
|
202
|
+
const section = sectionEntry.section;
|
|
203
|
+
const enabled = findAssignment(entries, section, "enabled");
|
|
204
|
+
if (enabled?.value !== true) {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const pluginId = parsePluginSectionId(section);
|
|
208
|
+
if (!pluginId) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
const [name, marketplace] = pluginId.split("@");
|
|
212
|
+
if (!name || !marketplace) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const cachePath = path.join(codexHome, "plugins", "cache", marketplace, name);
|
|
216
|
+
if (!(await pathExists(cachePath))) {
|
|
217
|
+
findings.push({
|
|
218
|
+
severity: "warning",
|
|
219
|
+
kind: "plugin_cache_missing",
|
|
220
|
+
line: sectionEntry.line,
|
|
221
|
+
message: `enabled plugin "${pluginId}" has no cache directory at ${relativeHome(cachePath)}.`
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return findings;
|
|
226
|
+
}
|
|
227
|
+
function parseTomlEntries(content) {
|
|
228
|
+
const result = [];
|
|
229
|
+
let currentSection;
|
|
230
|
+
content.split(/\r?\n/).forEach((rawLine, index) => {
|
|
231
|
+
const line = stripTomlComment(rawLine).trim();
|
|
232
|
+
if (!line) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const section = /^\[([^\]]+)\]$/.exec(line);
|
|
236
|
+
if (section) {
|
|
237
|
+
currentSection = section[1];
|
|
238
|
+
result.push({ line: index + 1, section: currentSection });
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const assignment = /^([A-Za-z0-9_-]+)\s*=\s*(.+)$/.exec(line);
|
|
242
|
+
if (!assignment) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
result.push({
|
|
246
|
+
line: index + 1,
|
|
247
|
+
section: currentSection,
|
|
248
|
+
key: assignment[1],
|
|
249
|
+
value: parseTomlValue(assignment[2].trim())
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
function parseTomlValue(value) {
|
|
255
|
+
if (value.startsWith("\"") || value.startsWith("'")) {
|
|
256
|
+
return parseTomlString(value);
|
|
257
|
+
}
|
|
258
|
+
if (value === "true") {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
if (value === "false") {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
266
|
+
function parseTomlString(value) {
|
|
267
|
+
if (value.startsWith("\"")) {
|
|
268
|
+
const match = /^"((?:\\.|[^"\\])*)"/.exec(value);
|
|
269
|
+
return match ? match[1].replace(/\\"/g, "\"").replace(/\\\\/g, "\\") : value;
|
|
270
|
+
}
|
|
271
|
+
const match = /^'([^']*)'/.exec(value);
|
|
272
|
+
return match ? match[1] : value;
|
|
273
|
+
}
|
|
274
|
+
function stripTomlComment(line) {
|
|
275
|
+
let quote;
|
|
276
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
277
|
+
const char = line[index];
|
|
278
|
+
const previous = line[index - 1];
|
|
279
|
+
if ((char === "\"" || char === "'") && previous !== "\\") {
|
|
280
|
+
quote = quote === char ? undefined : quote ?? char;
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
if (char === "#" && !quote) {
|
|
284
|
+
return line.slice(0, index);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return line;
|
|
288
|
+
}
|
|
289
|
+
function collectPermissionProfiles(entries) {
|
|
290
|
+
const profiles = new Set();
|
|
291
|
+
for (const entry of entries) {
|
|
292
|
+
if (!entry.section) {
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const match = /^permissions\.((?:"[^"]+"|'[^']+'|[^.]+))/.exec(entry.section);
|
|
296
|
+
if (match) {
|
|
297
|
+
profiles.add(unquoteTomlPart(match[1]));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return profiles;
|
|
301
|
+
}
|
|
302
|
+
function findAssignment(entries, section, key) {
|
|
303
|
+
return entries.find((entry) => entry.section === section && entry.key === key);
|
|
304
|
+
}
|
|
305
|
+
function findSectionLine(entries, section) {
|
|
306
|
+
return entries.find((entry) => entry.section === section && !entry.key)?.line;
|
|
307
|
+
}
|
|
308
|
+
function parsePluginSectionId(section) {
|
|
309
|
+
const raw = section.slice("plugins.".length);
|
|
310
|
+
return unquoteTomlPart(raw);
|
|
311
|
+
}
|
|
312
|
+
function unquoteTomlPart(value) {
|
|
313
|
+
if (value.startsWith("\"") || value.startsWith("'")) {
|
|
314
|
+
return parseTomlString(value);
|
|
315
|
+
}
|
|
316
|
+
return value;
|
|
317
|
+
}
|
|
318
|
+
function stringValue(value) {
|
|
319
|
+
return typeof value === "string" ? value : undefined;
|
|
320
|
+
}
|
|
321
|
+
function statusFor(findings) {
|
|
322
|
+
if (findings.some((finding) => finding.severity === "error")) {
|
|
323
|
+
return "fail";
|
|
324
|
+
}
|
|
325
|
+
return findings.length > 0 ? "warn" : "pass";
|
|
326
|
+
}
|
|
327
|
+
function formatValue(value) {
|
|
328
|
+
return value ? `\`${value}\`` : "not set";
|
|
329
|
+
}
|
|
330
|
+
async function pathExists(candidate) {
|
|
331
|
+
try {
|
|
332
|
+
await fs.access(candidate);
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
function expandHome(input) {
|
|
340
|
+
if (input === "~") {
|
|
341
|
+
return os.homedir();
|
|
342
|
+
}
|
|
343
|
+
if (input.startsWith("~/")) {
|
|
344
|
+
return path.join(os.homedir(), input.slice(2));
|
|
345
|
+
}
|
|
346
|
+
return input;
|
|
347
|
+
}
|
|
348
|
+
function relativeHome(input) {
|
|
349
|
+
const home = os.homedir();
|
|
350
|
+
if (input === home) {
|
|
351
|
+
return "~";
|
|
352
|
+
}
|
|
353
|
+
if (input.startsWith(`${home}${path.sep}`)) {
|
|
354
|
+
return `~${path.sep}${path.relative(home, input)}`;
|
|
355
|
+
}
|
|
356
|
+
return input;
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=configAudit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configAudit.js","sourceRoot":"","sources":["../../src/configAudit.ts"],"names":[],"mappings":"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"}
|