@lannguyensi/harness 0.54.0 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/dist/cli/adopt/derive.js +1 -0
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/doctor/format.js +8 -0
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.js +16 -0
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +16 -0
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/doctor/ug-inflight.d.ts +35 -0
- package/dist/cli/doctor/ug-inflight.js +57 -0
- package/dist/cli/doctor/ug-inflight.js.map +1 -0
- package/dist/cli/gc/index.d.ts +2 -1
- package/dist/cli/gc/index.js +196 -9
- package/dist/cli/gc/index.js.map +1 -1
- package/dist/cli/index.js +42 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/pack/auto-approve-path.d.ts +11 -0
- package/dist/cli/pack/auto-approve-path.js +4 -2
- package/dist/cli/pack/auto-approve-path.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +90 -0
- package/dist/cli/pack/hook-bootstrap.js +162 -0
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.js +164 -10
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +21 -0
- package/dist/cli/pack/hook-subagent-start.js +71 -0
- package/dist/cli/pack/hook-subagent-start.js.map +1 -0
- package/dist/cli/pack/hook-subagent-stop.d.ts +19 -0
- package/dist/cli/pack/hook-subagent-stop.js +41 -0
- package/dist/cli/pack/hook-subagent-stop.js.map +1 -0
- package/dist/io/read-regular-file.d.ts +33 -2
- package/dist/io/read-regular-file.js +41 -8
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +34 -4
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +34 -3
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +2 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +9 -0
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +135 -0
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +619 -0
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +25 -11
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +4 -4
- package/dist/policy-packs/builtin/understanding-before-execution.js +42 -1
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
- package/dist/runtime/read-only-bash.d.ts +33 -0
- package/dist/runtime/read-only-bash.js +291 -7
- package/dist/runtime/read-only-bash.js.map +1 -1
- package/dist/runtime/risk-classifier.js +16 -12
- package/dist/runtime/risk-classifier.js.map +1 -1
- package/dist/schema/hooks.d.ts +13 -13
- package/dist/schema/hooks.js +1 -0
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +24 -24
- package/dist/schema/policies.d.ts +19 -19
- package/package.json +1 -1
|
@@ -25,7 +25,13 @@ export function parseApprovalLifecycle(raw, stderr) {
|
|
|
25
25
|
}
|
|
26
26
|
const obj = raw;
|
|
27
27
|
if (obj["mode"] === "session") {
|
|
28
|
-
|
|
28
|
+
const maxAgeMs = parseMaxAge(obj["max_age"], stderr);
|
|
29
|
+
return {
|
|
30
|
+
expireOnToolMatch: [],
|
|
31
|
+
expireOnBashMatch: [],
|
|
32
|
+
...(maxAgeMs !== undefined && { maxAgeMs }),
|
|
33
|
+
legacyMode: true,
|
|
34
|
+
};
|
|
29
35
|
}
|
|
30
36
|
const expireOnToolMatch = [];
|
|
31
37
|
const list = obj["expire_on_tool_match"];
|
|
@@ -55,25 +61,33 @@ export function parseApprovalLifecycle(raw, stderr) {
|
|
|
55
61
|
else if (bashList !== undefined) {
|
|
56
62
|
stderr?.write(`harness pack hook: config.approval_lifecycle.expire_on_bash_match ignored (expected string[], got ${typeof bashList})\n`);
|
|
57
63
|
}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
const maxAgeMs = parseMaxAge(obj["max_age"], stderr);
|
|
65
|
+
return {
|
|
66
|
+
expireOnToolMatch,
|
|
67
|
+
expireOnBashMatch,
|
|
68
|
+
...(maxAgeMs !== undefined && { maxAgeMs }),
|
|
69
|
+
legacyMode: false,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse `approval_lifecycle.max_age` into milliseconds. Shared by both the
|
|
74
|
+
* boundary-lifecycle branch and the `{ mode: "session" }` branch (task
|
|
75
|
+
* 496660c5) so a malformed value warns identically in either mode.
|
|
76
|
+
*/
|
|
77
|
+
function parseMaxAge(maxAgeRaw, stderr) {
|
|
60
78
|
if (typeof maxAgeRaw === "string" && maxAgeRaw.length > 0) {
|
|
61
79
|
try {
|
|
62
|
-
|
|
80
|
+
return parseDurationSeconds(maxAgeRaw) * 1_000;
|
|
63
81
|
}
|
|
64
82
|
catch (err) {
|
|
65
83
|
const msg = err instanceof InvalidDurationError ? err.message : String(err);
|
|
66
84
|
stderr?.write(`harness pack hook: config.approval_lifecycle.max_age ignored: ${msg}\n`);
|
|
85
|
+
return undefined;
|
|
67
86
|
}
|
|
68
87
|
}
|
|
69
|
-
|
|
88
|
+
if (maxAgeRaw !== undefined) {
|
|
70
89
|
stderr?.write(`harness pack hook: config.approval_lifecycle.max_age ignored (expected duration string like "4h", got ${typeof maxAgeRaw})\n`);
|
|
71
90
|
}
|
|
72
|
-
return
|
|
73
|
-
expireOnToolMatch,
|
|
74
|
-
expireOnBashMatch,
|
|
75
|
-
...(maxAgeMs !== undefined && { maxAgeMs }),
|
|
76
|
-
legacyMode: false,
|
|
77
|
-
};
|
|
91
|
+
return undefined;
|
|
78
92
|
}
|
|
79
93
|
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/policy-packs/builtin/understanding-before-execution/lifecycle.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,mEAAmE;AACnE,+DAA+D;AAC/D,uEAAuE;AACvE,kCAAkC;AAElC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/policy-packs/builtin/understanding-before-execution/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,14 +114,14 @@ export declare const configSchema: z.ZodObject<{
|
|
|
114
114
|
max_age: z.ZodOptional<z.ZodString>;
|
|
115
115
|
}, "strict", z.ZodTypeAny, {
|
|
116
116
|
mode?: "session" | undefined;
|
|
117
|
+
max_age?: string | undefined;
|
|
117
118
|
expire_on_tool_match?: string[] | undefined;
|
|
118
119
|
expire_on_bash_match?: string[] | undefined;
|
|
119
|
-
max_age?: string | undefined;
|
|
120
120
|
}, {
|
|
121
121
|
mode?: "session" | undefined;
|
|
122
|
+
max_age?: string | undefined;
|
|
122
123
|
expire_on_tool_match?: string[] | undefined;
|
|
123
124
|
expire_on_bash_match?: string[] | undefined;
|
|
124
|
-
max_age?: string | undefined;
|
|
125
125
|
}>>;
|
|
126
126
|
auto_approve: z.ZodOptional<z.ZodObject<{
|
|
127
127
|
when: z.ZodArray<z.ZodString, "many">;
|
|
@@ -225,9 +225,9 @@ export declare const configSchema: z.ZodObject<{
|
|
|
225
225
|
mode?: Mode | undefined;
|
|
226
226
|
approval_lifecycle?: {
|
|
227
227
|
mode?: "session" | undefined;
|
|
228
|
+
max_age?: string | undefined;
|
|
228
229
|
expire_on_tool_match?: string[] | undefined;
|
|
229
230
|
expire_on_bash_match?: string[] | undefined;
|
|
230
|
-
max_age?: string | undefined;
|
|
231
231
|
} | undefined;
|
|
232
232
|
permission_profile?: string | undefined;
|
|
233
233
|
auto_approve?: {
|
|
@@ -261,9 +261,9 @@ export declare const configSchema: z.ZodObject<{
|
|
|
261
261
|
mode?: Mode | undefined;
|
|
262
262
|
approval_lifecycle?: {
|
|
263
263
|
mode?: "session" | undefined;
|
|
264
|
+
max_age?: string | undefined;
|
|
264
265
|
expire_on_tool_match?: string[] | undefined;
|
|
265
266
|
expire_on_bash_match?: string[] | undefined;
|
|
266
|
-
max_age?: string | undefined;
|
|
267
267
|
} | undefined;
|
|
268
268
|
permission_profile?: string | undefined;
|
|
269
269
|
auto_approve?: {
|
|
@@ -243,7 +243,11 @@ export const configSchema = z
|
|
|
243
243
|
expire_on_bash_match: z.array(z.string().min(1)).optional(),
|
|
244
244
|
// Safety net for sessions that never hit a listed tool/Bash
|
|
245
245
|
// boundary. Duration strings like `1h`, `4h`, `30m` are parsed
|
|
246
|
-
// by
|
|
246
|
+
// by `parseApprovalLifecycle`; enforced by the marker freshness
|
|
247
|
+
// check on PreToolUse (`checkApprovalMarker`'s `max_age`
|
|
248
|
+
// comparison), not by a PostToolUse hook — `max_age` still
|
|
249
|
+
// applies under `mode: session`, which only opts out of the
|
|
250
|
+
// PostToolUse boundary hooks.
|
|
247
251
|
max_age: z.string().min(1).optional(),
|
|
248
252
|
})
|
|
249
253
|
.strict()
|
|
@@ -413,6 +417,15 @@ const DEFAULT_EXPIRE_ON_TOOL_MATCH = [
|
|
|
413
417
|
"mcp__agent-tasks__tasks_transition",
|
|
414
418
|
];
|
|
415
419
|
const POST_TOOL_USE_COMMAND_CLAUDE = "harness pack hook post-tool-use";
|
|
420
|
+
// Slice 2 of the subagent-gate work (docs/decisions/2026-08-27-ug-auto-
|
|
421
|
+
// mode-approval.md "TTL, cwd, and subagents"): Claude-only for now (an
|
|
422
|
+
// Agent-tool subagent is a Claude Code concept; Codex has no equivalent
|
|
423
|
+
// event to emit these against). Always emitted alongside the PreToolUse
|
|
424
|
+
// blocker, independent of `approval_lifecycle.mode` — an in-flight
|
|
425
|
+
// record is a copy of whatever approval the parent holds at spawn time,
|
|
426
|
+
// not itself governed by the marker-expiry opt-out.
|
|
427
|
+
const SUBAGENT_START_COMMAND = "harness pack hook subagent-start";
|
|
428
|
+
const SUBAGENT_STOP_COMMAND = "harness pack hook subagent-stop";
|
|
416
429
|
// Task cf4cdc93 (Codex parity gap #3): unlike stop/pre-tool-use/
|
|
417
430
|
// post-tool-use, the active-claim tracker and stay-in-scope reminder
|
|
418
431
|
// need NO runtime-specific CLI verb — both hook bodies only ever
|
|
@@ -814,6 +827,34 @@ function buildHooks(runtime, pack, mode, opts = {}) {
|
|
|
814
827
|
budget_ms: 15000,
|
|
815
828
|
description: "Block Edit/Write/Bash until the operator has approved the session's Understanding Report via harness approve understanding. Opens only on the signed approval marker; the persisted JSON report and the evidence-ledger tag (understanding-approved:${SESSION_ID}) are audit evidence.",
|
|
816
829
|
},
|
|
830
|
+
// In-flight subagent records (slice 2, docs/decisions/2026-08-27-ug-
|
|
831
|
+
// auto-mode-approval.md "TTL, cwd, and subagents"). An Agent-tool
|
|
832
|
+
// subagent shares its parent's session_id but cannot itself call
|
|
833
|
+
// `harness approve understanding`; SubagentStart copies whatever
|
|
834
|
+
// approval the parent holds AT SPAWN TIME into a signed record the
|
|
835
|
+
// subagent can present later even if the parent's own marker expires
|
|
836
|
+
// mid-flight, and SubagentStop removes it when the subagent finishes.
|
|
837
|
+
// Always emitted alongside the PreToolUse blocker above — never
|
|
838
|
+
// gated behind `approval_lifecycle.mode` the way the marker-expiry
|
|
839
|
+
// hook below is, since a record is a copy of authority, not itself
|
|
840
|
+
// subject to that opt-out. Claude-only: the Agent tool (and its
|
|
841
|
+
// SubagentStart/SubagentStop events) has no Codex equivalent.
|
|
842
|
+
{
|
|
843
|
+
name: `${HOOK_NAME_PREFIX}:subagent-start`,
|
|
844
|
+
event: "SubagentStart",
|
|
845
|
+
command: SUBAGENT_START_COMMAND,
|
|
846
|
+
blocking: false,
|
|
847
|
+
budget_ms: 2000,
|
|
848
|
+
description: "Write a signed in-flight record for a newly-started Agent-tool subagent when the parent session currently holds a valid understanding-gate approval, so the subagent can keep that approval independent of what happens to the parent's own marker afterwards.",
|
|
849
|
+
},
|
|
850
|
+
{
|
|
851
|
+
name: `${HOOK_NAME_PREFIX}:subagent-stop`,
|
|
852
|
+
event: "SubagentStop",
|
|
853
|
+
command: SUBAGENT_STOP_COMMAND,
|
|
854
|
+
blocking: false,
|
|
855
|
+
budget_ms: 2000,
|
|
856
|
+
description: "Remove the in-flight record written for this subagent by subagent-start when it finishes.",
|
|
857
|
+
},
|
|
817
858
|
// PostToolUse marker-expiry hook (agent-tasks/d8ee60ca). Fires on the
|
|
818
859
|
// configured task-boundary tools, and (task bea04a03) on a Bash call
|
|
819
860
|
// when `approval_lifecycle.expire_on_bash_match` carries at least one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"understanding-before-execution.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/understanding-before-execution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"understanding-before-execution.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/understanding-before-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,3 +106,36 @@ export declare function isReadOnlyKubectlCommand(command: string): boolean;
|
|
|
106
106
|
* `sedScriptIsReadOnly`.
|
|
107
107
|
*/
|
|
108
108
|
export declare function isReadOnlySedCommand(command: string): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* curl read-only SHAPE floor for the Risk Classifier ONLY (task fdaad781,
|
|
111
|
+
* decision D-026, round 2 hardening). Composes exactly like the sed and
|
|
112
|
+
* kubectl floors above: it never sinks below an operator classifier,
|
|
113
|
+
* and only the DESTRUCTIVE floor (evaluated first in
|
|
114
|
+
* `risk-classifier.ts`) can raise above it. This comment states only
|
|
115
|
+
* the grammar; see docs/risk-gate.md's "curl read-only SHAPE floor"
|
|
116
|
+
* section for the full history (D-013's two leaked flag lists), the
|
|
117
|
+
* round-2 changes (mandatory `-q`, dropped `-L`/`-k`, the `\r`/query-
|
|
118
|
+
* string fixes), the residuals, and the operator escape hatch.
|
|
119
|
+
*
|
|
120
|
+
* `true` requires ALL of: no shell chaining, redirection, substitution,
|
|
121
|
+
* or background `&` anywhere in the whole command (the same whole-string
|
|
122
|
+
* guard every other floor in this file uses); the head word is exactly
|
|
123
|
+
* `curl` (unquoted, not composite -- no path prefix, no `env`/`command`/
|
|
124
|
+
* `sudo`/other wrapper, those are other heads and forfeit here); the
|
|
125
|
+
* SECOND word is exactly `-q` or `--disable` (unquoted, not composite,
|
|
126
|
+
* not inside a cluster, not merely present later -- curl only honors it
|
|
127
|
+
* as the first argument, and skipping it leaves `$CURL_HOME/.curlrc` /
|
|
128
|
+
* `$XDG_CONFIG_HOME/curlrc` / `~/.curlrc` free to set `output`,
|
|
129
|
+
* `request`, `data`, or `upload-file` underneath every other spelling
|
|
130
|
+
* this shape would otherwise accept -- see docs/risk-gate.md's curl
|
|
131
|
+
* section for the measurement); every remaining word is either a flag
|
|
132
|
+
* drawn from the closed allowlists above (no flag on this list names a
|
|
133
|
+
* file, and the only method any of them selects is HEAD, which is
|
|
134
|
+
* read-only; curl's config surface is closed off by the mandatory
|
|
135
|
+
* `-q`; a value-taking flag consumed only in its separate-token form,
|
|
136
|
+
* and never repeated) or the SINGLE operand, which must be a single-quoted,
|
|
137
|
+
* unbroken word matching `CURL_SHAPE_URL_RE`. Any composite word, any
|
|
138
|
+
* unknown flag, any `=`-glued flag, any second operand, or a missing
|
|
139
|
+
* operand forfeits the whole command.
|
|
140
|
+
*/
|
|
141
|
+
export declare function isReadOnlyCurlCommand(command: string): boolean;
|
|
@@ -617,17 +617,25 @@ const VERSION_OR_HELP_FLAGS = new Set([
|
|
|
617
617
|
]);
|
|
618
618
|
/**
|
|
619
619
|
* True when `trimmed` contains a shell chaining (`;`, `&`, `|`),
|
|
620
|
-
* redirection (`<`, `>`),
|
|
621
|
-
*
|
|
622
|
-
*
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
*
|
|
626
|
-
*
|
|
620
|
+
* redirection (`<`, `>`), command-substitution (backtick, `$(`), or a
|
|
621
|
+
* bare carriage return that could hide a write (or, for `curl`'s `-H`
|
|
622
|
+
* values, a header-injection newline a lenient parser folds on) behind
|
|
623
|
+
* an otherwise-provable read. Shared by `isReadOnlyBashCommand` and
|
|
624
|
+
* `isReadOnlyKubectlCommand` below (extracted, task da823721, to keep
|
|
625
|
+
* their identical preamble from being flagged as new copy-paste by the
|
|
626
|
+
* duplication gate), by `floorArgv` (`isReadOnlySedCommand`'s own
|
|
627
|
+
* preamble -- `floorArgv`'s only caller since D-013 removed the curl
|
|
628
|
+
* floor it used to also serve), and directly by `isReadOnlyCurlCommand`
|
|
629
|
+
* (task fdaad781, round 2:
|
|
630
|
+
* added `\r` after a measured bare-CR header-injection reaching curl's
|
|
631
|
+
* wire, see docs/risk-gate.md's curl section). NOT reused by
|
|
632
|
+
* `isReadOnlyBashPipeline`, which deliberately admits a bare `|` (see
|
|
633
|
+
* its own doc comment) and so needs a narrower reject set.
|
|
627
634
|
*/
|
|
628
635
|
function hasUnsafeShellMetachar(trimmed) {
|
|
629
636
|
return (/[;&|<>]/.test(trimmed) ||
|
|
630
637
|
trimmed.includes("\n") ||
|
|
638
|
+
trimmed.includes("\r") ||
|
|
631
639
|
trimmed.includes("`") ||
|
|
632
640
|
trimmed.includes("$("));
|
|
633
641
|
}
|
|
@@ -1458,6 +1466,282 @@ function readSedTwoPartCommand(s, start, isSubstitution) {
|
|
|
1458
1466
|
}
|
|
1459
1467
|
return i;
|
|
1460
1468
|
}
|
|
1469
|
+
/**
|
|
1470
|
+
* Word separator `splitCurlWords` honors: space and tab only, not JS
|
|
1471
|
+
* `\s` (which also matches NBSP, vertical tab, form feed, ideographic
|
|
1472
|
+
* space, and line terminators). Round 2 (task fdaad781) narrowed this
|
|
1473
|
+
* from `\s`: a non-ASCII or exotic whitespace character bash does not
|
|
1474
|
+
* treat as IFS -- an NBSP between `curl` and `-q`, say -- must not glue
|
|
1475
|
+
* two argv words into one here the way bash never would. `\n`/`\r`
|
|
1476
|
+
* never reach this splitter: `isReadOnlyCurlCommand`'s
|
|
1477
|
+
* `hasUnsafeShellMetachar` guard refuses both for the whole command
|
|
1478
|
+
* first.
|
|
1479
|
+
*/
|
|
1480
|
+
const CURL_WORD_SEPARATOR_RE = /[ \t]/;
|
|
1481
|
+
/**
|
|
1482
|
+
* Quote-aware word splitter built ONLY for `isReadOnlyCurlCommand`. Unlike
|
|
1483
|
+
* every other floor in this file, which treats `trimmed.split(/\s+/)` as
|
|
1484
|
+
* "the" tokenizer, this floor cannot: that split tears a quoted value
|
|
1485
|
+
* containing a space (`-H 'Accept: application/json'`) into the two raw
|
|
1486
|
+
* fragments `'Accept:` and `application/json'`, which this floor's own
|
|
1487
|
+
* positive fixtures require to parse as ONE quoted header value.
|
|
1488
|
+
*
|
|
1489
|
+
* Supports single and double quotes only; no backslash-escape or
|
|
1490
|
+
* expansion handling of any kind. Fails closed (`null`) on anything it
|
|
1491
|
+
* cannot cleanly resolve: an unterminated quote, or a bare unquoted
|
|
1492
|
+
* backslash outside any quote (this splitter has no escape model for it,
|
|
1493
|
+
* so refusing the whole command is the safe answer, not guessing one).
|
|
1494
|
+
* A word built from more than one quoted/unquoted run glued together with
|
|
1495
|
+
* no separating whitespace comes back `composite: true` rather than being
|
|
1496
|
+
* rejected outright here: it is a real, distinct shell word (bash would
|
|
1497
|
+
* concatenate the runs into one argv entry), just one this floor's shape
|
|
1498
|
+
* never allows, so the caller forfeits on it explicitly.
|
|
1499
|
+
*/
|
|
1500
|
+
function splitCurlWords(s) {
|
|
1501
|
+
const words = [];
|
|
1502
|
+
const n = s.length;
|
|
1503
|
+
let i = 0;
|
|
1504
|
+
while (i < n) {
|
|
1505
|
+
while (i < n && CURL_WORD_SEPARATOR_RE.test(s[i]))
|
|
1506
|
+
i += 1;
|
|
1507
|
+
if (i >= n)
|
|
1508
|
+
break;
|
|
1509
|
+
const runs = [];
|
|
1510
|
+
while (i < n && !CURL_WORD_SEPARATOR_RE.test(s[i])) {
|
|
1511
|
+
const ch = s[i];
|
|
1512
|
+
if (ch === "'" || ch === '"') {
|
|
1513
|
+
const close = s.indexOf(ch, i + 1);
|
|
1514
|
+
if (close === -1)
|
|
1515
|
+
return null; // unterminated quote: fail closed
|
|
1516
|
+
runs.push({ quote: ch === "'" ? "single" : "double", text: s.slice(i + 1, close) });
|
|
1517
|
+
i = close + 1;
|
|
1518
|
+
continue;
|
|
1519
|
+
}
|
|
1520
|
+
if (ch === "\\")
|
|
1521
|
+
return null; // unmodelled escape: fail closed
|
|
1522
|
+
const start = i;
|
|
1523
|
+
while (i < n &&
|
|
1524
|
+
!CURL_WORD_SEPARATOR_RE.test(s[i]) &&
|
|
1525
|
+
s[i] !== "'" &&
|
|
1526
|
+
s[i] !== '"' &&
|
|
1527
|
+
s[i] !== "\\") {
|
|
1528
|
+
i += 1;
|
|
1529
|
+
}
|
|
1530
|
+
runs.push({ quote: "none", text: s.slice(start, i) });
|
|
1531
|
+
}
|
|
1532
|
+
if (runs.length === 0)
|
|
1533
|
+
continue;
|
|
1534
|
+
if (runs.length === 1) {
|
|
1535
|
+
words.push({ content: runs[0].text, quote: runs[0].quote, composite: false });
|
|
1536
|
+
}
|
|
1537
|
+
else {
|
|
1538
|
+
words.push({ content: "", quote: "none", composite: true });
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
return words;
|
|
1542
|
+
}
|
|
1543
|
+
/**
|
|
1544
|
+
* curl short-flag cluster characters that take no value: no flag on
|
|
1545
|
+
* this list names a file, and the only method any of them selects is
|
|
1546
|
+
* HEAD (`-I`), which is read-only (`-s -S -f -I`, in any combination).
|
|
1547
|
+
* Round 2 (task fdaad781) dropped `-L` (`--location`) and `-k`
|
|
1548
|
+
* (`--insecure`) from this set: `-L` follows a redirect and forwards a
|
|
1549
|
+
* custom `-H` header cross-host over plaintext; `-k` is a deliberate
|
|
1550
|
+
* TLS-verification bypass that should stay approval-gated. Both now
|
|
1551
|
+
* forfeit the shape. See docs/risk-gate.md's curl section for the
|
|
1552
|
+
* measurement behind the `-L` finding.
|
|
1553
|
+
*/
|
|
1554
|
+
const CURL_NO_VALUE_SHORT_CHARS = new Set(["s", "S", "f", "I"]);
|
|
1555
|
+
/** curl long flags that take no value: no flag on this list names a file, and the only method any of them selects is HEAD (`--head`), which is read-only. See `CURL_NO_VALUE_SHORT_CHARS` for why `--location` and `--insecure` are not on it. */
|
|
1556
|
+
const CURL_NO_VALUE_LONG_FLAGS = new Set([
|
|
1557
|
+
"--silent", "--show-error", "--fail", "--head",
|
|
1558
|
+
]);
|
|
1559
|
+
/**
|
|
1560
|
+
* curl long flags whose value is admitted ONLY in the separate-token
|
|
1561
|
+
* form (`--header VALUE`, never `--header=VALUE`, checked and rejected
|
|
1562
|
+
* before this map is consulted). Value maps to the same key as the
|
|
1563
|
+
* matching short flag below, so a repeat count is shared across spellings.
|
|
1564
|
+
*/
|
|
1565
|
+
const CURL_VALUE_LONG_FLAGS = new Map([
|
|
1566
|
+
["--header", "header"],
|
|
1567
|
+
["--max-time", "maxtime"],
|
|
1568
|
+
["--connect-timeout", "connecttimeout"],
|
|
1569
|
+
]);
|
|
1570
|
+
/**
|
|
1571
|
+
* Shape for the ONE operand this floor admits: `https://`, a host made
|
|
1572
|
+
* of letters, digits, `.` and `-` only, an optional `:PORT`, and an
|
|
1573
|
+
* optional path with none of curl's globbing characters (`{}[]`), no
|
|
1574
|
+
* whitespace, backslash, backtick or `$`. No userinfo (`user:pw@`) is
|
|
1575
|
+
* reachable through this shape: the host class has no `:`/`@`, so
|
|
1576
|
+
* `https://user:pw@x` cannot match end-to-end. Round 2 (task fdaad781)
|
|
1577
|
+
* admits `?` and `*` in the path (previously excluded): the operand is
|
|
1578
|
+
* single-quoted, so the shell cannot glob on either character, and
|
|
1579
|
+
* curl's own URL-globbing syntax uses only `{}`/`[]`, never `?`/`*`,
|
|
1580
|
+
* so admitting them widens no shape gap and closes the most common
|
|
1581
|
+
* single-parameter read-only query-string spelling this floor used to
|
|
1582
|
+
* forfeit (a MULTI-parameter query string joined by `&` still forfeits
|
|
1583
|
+
* even single-quoted -- see docs/risk-gate.md's Residuals for why that
|
|
1584
|
+
* stays out of scope). See docs/risk-gate.md's curl section for the
|
|
1585
|
+
* measurement behind admitting `?`/`*`. Do not "clean up" further
|
|
1586
|
+
* without re-deriving it.
|
|
1587
|
+
*/
|
|
1588
|
+
const CURL_SHAPE_URL_RE = /^https:\/\/[A-Za-z0-9.-]+(:[0-9]+)?(\/[^'\s{}[\]\\`$]*)?$/;
|
|
1589
|
+
/**
|
|
1590
|
+
* `true` when `value` is an admissible VALUE for the value-taking flag
|
|
1591
|
+
* `key` (`"header"` or one of the two timeout keys). `composite` always
|
|
1592
|
+
* forfeits (a glued flag+value pair like `-H'X: y'` never reaches a
|
|
1593
|
+
* legitimate value this way). A header value must be quoted (either
|
|
1594
|
+
* quote character), must not start with `@` after quote-stripping and
|
|
1595
|
+
* leading-whitespace trimming (a local-file read; the trim keeps the
|
|
1596
|
+
* ALLOW decision on the shape rather than on curl's own header parser,
|
|
1597
|
+
* round 4), and must carry no `$` or backtick. A bare `\n` or
|
|
1598
|
+
* `\r` can never reach here: `isReadOnlyCurlCommand`'s whole-command
|
|
1599
|
+
* `hasUnsafeShellMetachar` guard already refuses both for the entire
|
|
1600
|
+
* command before any word is split out, so this function forfeits on
|
|
1601
|
+
* neither character itself (round 3, task fdaad781: they were dropped
|
|
1602
|
+
* from this regex as dead, unreachable code; see docs/risk-gate.md's
|
|
1603
|
+
* curl section for the measurement that motivated the `\r` guard in
|
|
1604
|
+
* the first place). A timeout value must be a bare non-negative
|
|
1605
|
+
* integer, `^[0-9]+$` exactly.
|
|
1606
|
+
*/
|
|
1607
|
+
function isAllowedCurlFlagValue(key, value) {
|
|
1608
|
+
if (value.composite)
|
|
1609
|
+
return false;
|
|
1610
|
+
if (key === "header") {
|
|
1611
|
+
if (value.quote === "none")
|
|
1612
|
+
return false;
|
|
1613
|
+
if (value.content.trimStart().startsWith("@"))
|
|
1614
|
+
return false;
|
|
1615
|
+
return !/[\x60$]/.test(value.content);
|
|
1616
|
+
}
|
|
1617
|
+
return /^[0-9]+$/.test(value.content);
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* Consume a value-taking flag's value at `words[i + 1]` (the shape
|
|
1621
|
+
* requires the separate-token form): validates it and enforces "never
|
|
1622
|
+
* repeated" for `key`, updating `valueFlagCounts` in place. Returns the
|
|
1623
|
+
* loop index to resume at (`i + 1`, the value's own index, since the
|
|
1624
|
+
* `for` loop's own `i += 1` then advances past it), or `null` to forfeit
|
|
1625
|
+
* the whole command. Shared by both value-taking-flag call sites in
|
|
1626
|
+
* `isReadOnlyCurlCommand` (the long-flag branch and the standalone
|
|
1627
|
+
* `-H`/`-m` branch) so the repeat-count bookkeeping has one home.
|
|
1628
|
+
*/
|
|
1629
|
+
function consumeCurlFlagValue(words, i, key, valueFlagCounts) {
|
|
1630
|
+
const value = words[i + 1];
|
|
1631
|
+
if (value === undefined || !isAllowedCurlFlagValue(key, value))
|
|
1632
|
+
return null;
|
|
1633
|
+
const count = (valueFlagCounts.get(key) ?? 0) + 1;
|
|
1634
|
+
if (count > 1)
|
|
1635
|
+
return null; // repeated value-taking flag: forfeit
|
|
1636
|
+
valueFlagCounts.set(key, count);
|
|
1637
|
+
return i + 1;
|
|
1638
|
+
}
|
|
1639
|
+
/**
|
|
1640
|
+
* curl read-only SHAPE floor for the Risk Classifier ONLY (task fdaad781,
|
|
1641
|
+
* decision D-026, round 2 hardening). Composes exactly like the sed and
|
|
1642
|
+
* kubectl floors above: it never sinks below an operator classifier,
|
|
1643
|
+
* and only the DESTRUCTIVE floor (evaluated first in
|
|
1644
|
+
* `risk-classifier.ts`) can raise above it. This comment states only
|
|
1645
|
+
* the grammar; see docs/risk-gate.md's "curl read-only SHAPE floor"
|
|
1646
|
+
* section for the full history (D-013's two leaked flag lists), the
|
|
1647
|
+
* round-2 changes (mandatory `-q`, dropped `-L`/`-k`, the `\r`/query-
|
|
1648
|
+
* string fixes), the residuals, and the operator escape hatch.
|
|
1649
|
+
*
|
|
1650
|
+
* `true` requires ALL of: no shell chaining, redirection, substitution,
|
|
1651
|
+
* or background `&` anywhere in the whole command (the same whole-string
|
|
1652
|
+
* guard every other floor in this file uses); the head word is exactly
|
|
1653
|
+
* `curl` (unquoted, not composite -- no path prefix, no `env`/`command`/
|
|
1654
|
+
* `sudo`/other wrapper, those are other heads and forfeit here); the
|
|
1655
|
+
* SECOND word is exactly `-q` or `--disable` (unquoted, not composite,
|
|
1656
|
+
* not inside a cluster, not merely present later -- curl only honors it
|
|
1657
|
+
* as the first argument, and skipping it leaves `$CURL_HOME/.curlrc` /
|
|
1658
|
+
* `$XDG_CONFIG_HOME/curlrc` / `~/.curlrc` free to set `output`,
|
|
1659
|
+
* `request`, `data`, or `upload-file` underneath every other spelling
|
|
1660
|
+
* this shape would otherwise accept -- see docs/risk-gate.md's curl
|
|
1661
|
+
* section for the measurement); every remaining word is either a flag
|
|
1662
|
+
* drawn from the closed allowlists above (no flag on this list names a
|
|
1663
|
+
* file, and the only method any of them selects is HEAD, which is
|
|
1664
|
+
* read-only; curl's config surface is closed off by the mandatory
|
|
1665
|
+
* `-q`; a value-taking flag consumed only in its separate-token form,
|
|
1666
|
+
* and never repeated) or the SINGLE operand, which must be a single-quoted,
|
|
1667
|
+
* unbroken word matching `CURL_SHAPE_URL_RE`. Any composite word, any
|
|
1668
|
+
* unknown flag, any `=`-glued flag, any second operand, or a missing
|
|
1669
|
+
* operand forfeits the whole command.
|
|
1670
|
+
*/
|
|
1671
|
+
export function isReadOnlyCurlCommand(command) {
|
|
1672
|
+
const trimmed = command.trim();
|
|
1673
|
+
if (trimmed === "")
|
|
1674
|
+
return false;
|
|
1675
|
+
if (hasUnsafeShellMetachar(trimmed))
|
|
1676
|
+
return false;
|
|
1677
|
+
const words = splitCurlWords(trimmed);
|
|
1678
|
+
if (words === null || words.length === 0)
|
|
1679
|
+
return false;
|
|
1680
|
+
const head = words[0];
|
|
1681
|
+
if (head.composite || head.quote !== "none" || head.content !== "curl")
|
|
1682
|
+
return false;
|
|
1683
|
+
// Mandatory `-q`/`--disable` as the SECOND word (curl only honors it
|
|
1684
|
+
// as the first argument): closes the curlrc auto-load residual, see
|
|
1685
|
+
// this function's docstring above.
|
|
1686
|
+
const disableWord = words[1];
|
|
1687
|
+
if (disableWord === undefined ||
|
|
1688
|
+
disableWord.composite ||
|
|
1689
|
+
disableWord.quote !== "none" ||
|
|
1690
|
+
(disableWord.content !== "-q" && disableWord.content !== "--disable")) {
|
|
1691
|
+
return false;
|
|
1692
|
+
}
|
|
1693
|
+
let urlWord = null;
|
|
1694
|
+
const valueFlagCounts = new Map();
|
|
1695
|
+
for (let i = 2; i < words.length; i += 1) {
|
|
1696
|
+
const w = words[i];
|
|
1697
|
+
if (w.composite)
|
|
1698
|
+
return false;
|
|
1699
|
+
if (w.quote === "none" && w.content.startsWith("-") && w.content !== "-") {
|
|
1700
|
+
const t = w.content;
|
|
1701
|
+
if (t.startsWith("--")) {
|
|
1702
|
+
if (t.includes("="))
|
|
1703
|
+
return false; // `--flag=value` glued form: forfeit
|
|
1704
|
+
if (CURL_NO_VALUE_LONG_FLAGS.has(t))
|
|
1705
|
+
continue;
|
|
1706
|
+
const key = CURL_VALUE_LONG_FLAGS.get(t);
|
|
1707
|
+
if (key === undefined)
|
|
1708
|
+
return false; // not on the closed list
|
|
1709
|
+
const next = consumeCurlFlagValue(words, i, key, valueFlagCounts);
|
|
1710
|
+
if (next === null)
|
|
1711
|
+
return false;
|
|
1712
|
+
i = next;
|
|
1713
|
+
continue;
|
|
1714
|
+
}
|
|
1715
|
+
if (t === "-H" || t === "-m") {
|
|
1716
|
+
const key = t === "-H" ? "header" : "maxtime";
|
|
1717
|
+
const next = consumeCurlFlagValue(words, i, key, valueFlagCounts);
|
|
1718
|
+
if (next === null)
|
|
1719
|
+
return false;
|
|
1720
|
+
i = next;
|
|
1721
|
+
continue;
|
|
1722
|
+
}
|
|
1723
|
+
// Any other short flag or cluster: every character must be a
|
|
1724
|
+
// no-value char. `-H`/`-m` are recognised only as a WHOLE token
|
|
1725
|
+
// above, never as a cluster member, so `-sH` and `-mS` forfeit here.
|
|
1726
|
+
const clusterChars = t.slice(1);
|
|
1727
|
+
if (clusterChars.length === 0)
|
|
1728
|
+
return false;
|
|
1729
|
+
if (![...clusterChars].every((c) => CURL_NO_VALUE_SHORT_CHARS.has(c)))
|
|
1730
|
+
return false;
|
|
1731
|
+
continue;
|
|
1732
|
+
}
|
|
1733
|
+
// Not a recognised flag token: the operand. A second operand (or a
|
|
1734
|
+
// quoted/mis-spelled flag that fell through to here) forfeits.
|
|
1735
|
+
if (urlWord !== null)
|
|
1736
|
+
return false;
|
|
1737
|
+
urlWord = w;
|
|
1738
|
+
}
|
|
1739
|
+
if (urlWord === null)
|
|
1740
|
+
return false;
|
|
1741
|
+
if (urlWord.composite || urlWord.quote !== "single")
|
|
1742
|
+
return false;
|
|
1743
|
+
return CURL_SHAPE_URL_RE.test(urlWord.content);
|
|
1744
|
+
}
|
|
1461
1745
|
/**
|
|
1462
1746
|
* Returns true when `t` (with any trailing `=VALUE` glue stripped) is a
|
|
1463
1747
|
* GNU/BSD `getopt_long` ABBREVIATION of `fullFlag`: a prefix (including
|