@lannguyensi/harness 0.39.0 → 0.41.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.
Files changed (127) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/cli/approve/stdin-report.d.ts +42 -0
  3. package/dist/cli/approve/stdin-report.js +143 -0
  4. package/dist/cli/approve/stdin-report.js.map +1 -0
  5. package/dist/cli/approve/understanding.d.ts +20 -0
  6. package/dist/cli/approve/understanding.js +44 -0
  7. package/dist/cli/approve/understanding.js.map +1 -1
  8. package/dist/cli/diff/git.d.ts +5 -0
  9. package/dist/cli/diff/git.js +25 -3
  10. package/dist/cli/diff/git.js.map +1 -1
  11. package/dist/cli/doctor/codex.d.ts +8 -0
  12. package/dist/cli/doctor/codex.js +8 -1
  13. package/dist/cli/doctor/codex.js.map +1 -1
  14. package/dist/cli/doctor/format.js +23 -11
  15. package/dist/cli/doctor/format.js.map +1 -1
  16. package/dist/cli/doctor/index.d.ts +36 -0
  17. package/dist/cli/doctor/index.js +131 -29
  18. package/dist/cli/doctor/index.js.map +1 -1
  19. package/dist/cli/doctor/types.d.ts +26 -0
  20. package/dist/cli/dry-run.js +5 -0
  21. package/dist/cli/dry-run.js.map +1 -1
  22. package/dist/cli/explain.js +16 -3
  23. package/dist/cli/explain.js.map +1 -1
  24. package/dist/cli/index.js +109 -6
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/init/composer.js +10 -31
  27. package/dist/cli/init/composer.js.map +1 -1
  28. package/dist/cli/init/index.d.ts +18 -0
  29. package/dist/cli/init/index.js +28 -2
  30. package/dist/cli/init/index.js.map +1 -1
  31. package/dist/cli/init/interactive.d.ts +8 -0
  32. package/dist/cli/init/interactive.js +22 -1
  33. package/dist/cli/init/interactive.js.map +1 -1
  34. package/dist/cli/init/profiles.d.ts +2 -2
  35. package/dist/cli/init/profiles.js +11 -2
  36. package/dist/cli/init/profiles.js.map +1 -1
  37. package/dist/cli/init/templates.d.ts +1 -1
  38. package/dist/cli/init/templates.js +174 -4
  39. package/dist/cli/init/templates.js.map +1 -1
  40. package/dist/cli/list.js +3 -1
  41. package/dist/cli/list.js.map +1 -1
  42. package/dist/cli/pack/approve-escape.d.ts +19 -0
  43. package/dist/cli/pack/approve-escape.js +120 -0
  44. package/dist/cli/pack/approve-escape.js.map +1 -0
  45. package/dist/cli/pack/hook-bootstrap.d.ts +24 -0
  46. package/dist/cli/pack/hook-bootstrap.js +47 -1
  47. package/dist/cli/pack/hook-bootstrap.js.map +1 -1
  48. package/dist/cli/pack/hook-branch-protection.js +9 -1
  49. package/dist/cli/pack/hook-branch-protection.js.map +1 -1
  50. package/dist/cli/pack/hook-codex-post-tool-use.d.ts +25 -0
  51. package/dist/cli/pack/hook-codex-post-tool-use.js +160 -0
  52. package/dist/cli/pack/hook-codex-post-tool-use.js.map +1 -0
  53. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +1 -0
  54. package/dist/cli/pack/hook-codex-pre-tool-use.js +43 -10
  55. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
  56. package/dist/cli/pack/hook-codex-stop.js +1 -8
  57. package/dist/cli/pack/hook-codex-stop.js.map +1 -1
  58. package/dist/cli/pack/hook-post-tool-use.js +16 -131
  59. package/dist/cli/pack/hook-post-tool-use.js.map +1 -1
  60. package/dist/cli/pack/hook-pre-tool-use.js +69 -26
  61. package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
  62. package/dist/cli/pack/hook-stay-in-scope.js +63 -20
  63. package/dist/cli/pack/hook-stay-in-scope.js.map +1 -1
  64. package/dist/cli/pack/hook-track-active-claim.js +33 -9
  65. package/dist/cli/pack/hook-track-active-claim.js.map +1 -1
  66. package/dist/cli/pack/index.d.ts +2 -1
  67. package/dist/cli/pack/index.js +2 -1
  68. package/dist/cli/pack/index.js.map +1 -1
  69. package/dist/cli/pack/mutate.d.ts +19 -0
  70. package/dist/cli/pack/mutate.js +38 -0
  71. package/dist/cli/pack/mutate.js.map +1 -1
  72. package/dist/cli/pack/reseed.d.ts +19 -0
  73. package/dist/cli/pack/reseed.js +118 -0
  74. package/dist/cli/pack/reseed.js.map +1 -0
  75. package/dist/cli/pack/understanding-report-schema-hint.js +12 -1
  76. package/dist/cli/pack/understanding-report-schema-hint.js.map +1 -1
  77. package/dist/cli/pause/index.js +12 -3
  78. package/dist/cli/pause/index.js.map +1 -1
  79. package/dist/cli/session-start/index.d.ts +14 -0
  80. package/dist/cli/session-start/index.js +42 -2
  81. package/dist/cli/session-start/index.js.map +1 -1
  82. package/dist/cli/validate/checks.js +8 -0
  83. package/dist/cli/validate/checks.js.map +1 -1
  84. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -2
  85. package/dist/policy-packs/builtin/branch-protection-runtime.js +4 -2
  86. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
  87. package/dist/policy-packs/builtin/branch-protection.d.ts +10 -1
  88. package/dist/policy-packs/builtin/branch-protection.js +17 -0
  89. package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
  90. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +197 -24
  91. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +342 -40
  92. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -1
  93. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +26 -1
  94. package/dist/policy-packs/builtin/understanding-before-execution.js +302 -17
  95. package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
  96. package/dist/policy-packs/registry.d.ts +22 -1
  97. package/dist/policy-packs/registry.js +19 -2
  98. package/dist/policy-packs/registry.js.map +1 -1
  99. package/dist/policy-packs/ux-compare.d.ts +14 -0
  100. package/dist/policy-packs/ux-compare.js +58 -0
  101. package/dist/policy-packs/ux-compare.js.map +1 -0
  102. package/dist/policy-packs/ux-drift-check.d.ts +27 -0
  103. package/dist/policy-packs/ux-drift-check.js +78 -0
  104. package/dist/policy-packs/ux-drift-check.js.map +1 -0
  105. package/dist/probes/mcp.d.ts +13 -0
  106. package/dist/probes/mcp.js +57 -0
  107. package/dist/probes/mcp.js.map +1 -1
  108. package/dist/runtime/approval-signing.d.ts +82 -0
  109. package/dist/runtime/approval-signing.js +275 -0
  110. package/dist/runtime/approval-signing.js.map +1 -0
  111. package/dist/runtime/intercept.js +62 -5
  112. package/dist/runtime/intercept.js.map +1 -1
  113. package/dist/runtime/ledger-add.js +5 -1
  114. package/dist/runtime/ledger-add.js.map +1 -1
  115. package/dist/runtime/pause-sentinel.js +14 -3
  116. package/dist/runtime/pause-sentinel.js.map +1 -1
  117. package/dist/runtime/recovery-git-commit.d.ts +22 -0
  118. package/dist/runtime/recovery-git-commit.js +284 -0
  119. package/dist/runtime/recovery-git-commit.js.map +1 -0
  120. package/dist/runtime/tool-name-aliases.d.ts +1 -0
  121. package/dist/runtime/tool-name-aliases.js +7 -1
  122. package/dist/runtime/tool-name-aliases.js.map +1 -1
  123. package/dist/schema/index.d.ts +53 -42
  124. package/dist/schema/policies.d.ts +56 -44
  125. package/dist/schema/policies.js +79 -9
  126. package/dist/schema/policies.js.map +1 -1
  127. package/package.json +2 -1
@@ -230,6 +230,53 @@ hooks:
230
230
  blocking: hard
231
231
  budget_ms: 1000
232
232
 
233
+ # deny-kill-switch-bash / deny-session-env-strip-bash / deny-sentinel-write-bash
234
+ # (task cf1fde6d): \`harness pause\` / \`harness resume\` refuse to run inside an
235
+ # agent shell in CODE, but that CLI check is a speed bump, not a boundary: a
236
+ # Claude Code \`! \`-prefixed shell inherits this session's env AND its non-TTY
237
+ # stdin, so it is indistinguishable from an agent Bash call and trips the same
238
+ # check the agent would trip (verified live; see
239
+ # docs/okf/pause-vs-gate-kill-switch.md). The actual enforcement point that
240
+ # runs BEFORE the agent's Bash executes is this PreToolUse deny-policy layer.
241
+ # These three hooks/policies below deny, from Bash: the kill-switch verbs
242
+ # themselves, the env-stripping wrappers that would otherwise defeat
243
+ # \`refuseIfAgentShell\`, and direct writes to the unsigned pause sentinel file.
244
+ - name: deny-kill-switch-bash
245
+ event: PreToolUse
246
+ match: "Bash"
247
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(?:npx\\s+|\\S*/)?harness\\s+(["\\x27]?)(?:pause|resume|gate\\s+(["\\x27]?)(?:disable|enable)\\4)\\3(?![\\w-])'
248
+ command: harness policy intercept
249
+ blocking: hard
250
+ budget_ms: 1000
251
+
252
+ - name: deny-session-env-strip-bash
253
+ event: PreToolUse
254
+ match: "Bash"
255
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(env\\b[^;\\n|&]*-u\\s*(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|env\\b[^;\\n|&]*--unset(?:=|\\s+)(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|unset\\s+(\\S+\\s+)*(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)=(?=\\s))'
256
+ command: harness policy intercept
257
+ blocking: hard
258
+ budget_ms: 1000
259
+
260
+ # Known gap, deliberately not faked as coverage: this only catches the
261
+ # obvious shell shapes (\`> .harness-paused\`, \`tee .harness-paused\`,
262
+ # \`cp ... .harness-paused\`). A regex over the raw command string cannot
263
+ # see through a heredoc, \`sh -c '...'\`, \`bash -lc\`, \`eval\`,
264
+ # \`python -c\`, base64-decoded payloads, an fs.write call inside a script
265
+ # file the agent creates and then executes, a symlink swap, or the
266
+ # sentinel-write equivalents of \`cp\`/\`>\` done via \`mv\`, \`ln\`,
267
+ # \`install\`, or \`dd\`. These are NOT covered on purpose (regex whack-a-
268
+ # mole against every file-write-capable tool does not meaningfully close
269
+ # this class); closing it for real needs either signing the sentinel
270
+ # (HMAC) or a filesystem-level write guard, neither of which is in scope
271
+ # here; both are noted as follow-ups.
272
+ - name: deny-sentinel-write-bash
273
+ event: PreToolUse
274
+ match: "Bash"
275
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(tee|cp)\\b[^;\\n|&]*\\.harness-paused\\b|>{1,2}\\s*\\S*\\.harness-paused\\b'
276
+ command: harness policy intercept
277
+ blocking: hard
278
+ budget_ms: 1000
279
+
233
280
  # risk-gate (Phase 7 #6): the Risk Gate enforcement hook. The
234
281
  # gate-prod-destructive policies below reference it. Same generic
235
282
  # \`harness policy intercept\` entrypoint as every other policy hook;
@@ -243,6 +290,26 @@ hooks:
243
290
  blocking: hard
244
291
  budget_ms: 2000
245
292
 
293
+ # Optional: runtime-reality drift gate (NOT enabled by default).
294
+ # Blocks destructive runtime commands (compose down/restart, systemctl,
295
+ # kill/pkill, ./deploy-*) when the live process state has drifted from what
296
+ # your expectations file says should be running. Left COMMENTED on purpose:
297
+ # the hook is host-coupled and, without RUNTIME_REALITY_KEYWORD + an
298
+ # expectations file + RUNTIME_REALITY_PROBE_CMD, degrades silently to allow,
299
+ # a no-op that looks like protection. To arm it, uncomment the entry and
300
+ # fill in the three env values. The expectations-file format and how to
301
+ # install the probe are documented in docs/runtime-reality-hook.md.
302
+ #
303
+ # - name: runtime-reality
304
+ # event: PreToolUse
305
+ # command: >-
306
+ # RUNTIME_REALITY_KEYWORD=<your-stack>
307
+ # RUNTIME_REALITY_EXPECTATIONS_DIR=$HOME/.runtime-reality/expectations
308
+ # RUNTIME_REALITY_PROBE_CMD="node $HOME/.runtime-reality/probes/runtime-reality-docker-probe.mjs"
309
+ # harness pack hook runtime-reality
310
+ # blocking: hard
311
+ # description: Block destructive runtime commands on critical process drift
312
+
246
313
  policies:
247
314
  - name: review-before-merge
248
315
  description: Block PR merges unless a ledger entry tagged review:<pr-number> exists for this session.
@@ -492,9 +559,9 @@ policies:
492
559
  required:
493
560
  - "a deliberate operator override: a critical production mutation has no benign reading"
494
561
  run:
495
- - "Choose a non-destructive alternative, or run the command yourself outside the agent."
496
- - "Operator override (deliberate): run \`harness approve risk --force <reason>\` from your own shell (\`! \` prefix in Claude Code, with --i-am-the-operator to acknowledge a non-TTY invocation)."
497
- - "Session-wide kill switch: run \`harness pause --for <duration>\` instead (every gate silences until the sentinel expires or \`harness resume\` runs)."
562
+ - "Choose a non-destructive alternative, or ask the OPERATOR to run the command themselves, outside the agent."
563
+ - "Operator override (deliberate): the OPERATOR runs \`harness approve risk --force <reason>\` from their own shell (\`! \` prefix in Claude Code, with --i-am-the-operator to acknowledge a non-TTY invocation)."
564
+ - "Session-wide kill switch: the OPERATOR runs \`harness pause --for <duration>\` instead, from a terminal outside this agent session (every gate silences until the sentinel expires or \`harness resume\` runs); you cannot run \`harness pause\`/\`harness resume\` yourself, that is denied at the Bash-tool level."
498
565
  - name: gate-prod-destructive-approval
499
566
  description: Require operator approval for high-severity destructive shell actions against a production target.
500
567
  trigger:
@@ -522,6 +589,91 @@ policies:
522
589
  run:
523
590
  - "harness approve risk"
524
591
 
592
+ # deny-kill-switch-bypass / deny-session-env-strip / deny-pause-sentinel-forgery
593
+ # (task cf1fde6d): \`harness pause\`/\`harness resume\` refuse to run inside an
594
+ # agent shell in CODE, but that CLI check (refuseIfAgentShell / refuseIfNonTTY
595
+ # in src/cli/pause/index.ts) is a speed bump, not a boundary: a Claude Code
596
+ # \`! \`-prefixed shell inherits this session's env AND its non-TTY stdin, so
597
+ # it is indistinguishable from an agent Bash call and trips the same checks
598
+ # (verified live; docs/okf/pause-vs-gate-kill-switch.md). This PreToolUse
599
+ # layer is the enforcement point that actually runs BEFORE the agent's Bash
600
+ # executes.
601
+ #
602
+ # UPDATE (task 2cc73f55, closes the gap the HONESTY NOTE below used to
603
+ # document): these three now declare \`operator_only: true\` instead of a
604
+ # requires.ledger_tag. Every requires:-based policy in this engine is, by
605
+ # construction, satisfiable by the SAME agent it gates: nothing stops it
606
+ # from calling mcp__agent-grounding__ledger_add with content matching the
607
+ # tag for its own session before running the denied command, which used to
608
+ # flip deny to allow (src/runtime/intercept.ts, the satisfied-requires
609
+ # branch). \`operator_only: true\` closes that specific hole: the policy
610
+ # declares NO requires: at all, and intercept() short-circuits to an
611
+ # unconditional deny before the requires pipeline runs — no ledger query,
612
+ # no template substitution, so no ledger write, marker file, or flag can
613
+ # ever flip it to allow. See docs/writing-custom-policies.md tripwire 4 and
614
+ # the "Operator-only unconditional deny" section for the schema contract,
615
+ # and tests/cli/init-full-template-kill-switch-deny.test.ts for a test that
616
+ # forges every ledger-evidence shape available to intercept() and asserts
617
+ # the block holds.
618
+ #
619
+ # RESIDUAL GAP (still open, out of scope for task 2cc73f55): bash_match is
620
+ # still a regex over the raw command string, matched BEFORE evaluation ever
621
+ # reaches operator_only:, so it still cannot see through a heredoc,
622
+ # \`sh -c '...'\`, \`eval\`, a base64-decoded payload, or a script file the
623
+ # agent writes and then executes — an agent that defeats the TRIGGER match
624
+ # never reaches this deny at all. That is a bash_match coverage gap, not a
625
+ # requires-satisfaction gap, and is unrelated to the fix here (see PR #341
626
+ # for the known uncoverable shapes). \`harness validate\` no longer warns
627
+ # "declares no producers" on these three (checkPolicySelfAttestation now
628
+ # recognises operator_only: true as correct-by-construction).
629
+ - name: deny-kill-switch-bypass
630
+ description: Deny harness pause, harness resume, harness gate disable, and harness gate enable from the agent's Bash tool. These are operator-only kill switches.
631
+ trigger:
632
+ event: PreToolUse
633
+ match: "Bash"
634
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(?:npx\\s+|\\S*/)?harness\\s+(["\\x27]?)(?:pause|resume|gate\\s+(["\\x27]?)(?:disable|enable)\\4)\\3(?![\\w-])'
635
+ operator_only: true
636
+ hook: deny-kill-switch-bash
637
+ enforcement: block
638
+ ux:
639
+ cannot: "You cannot run \`harness pause\`, \`harness resume\`, \`harness gate disable\`, or \`harness gate enable\`."
640
+ required:
641
+ - "the OPERATOR to run this from a terminal genuinely outside your agent session, not a \`! \`-prefixed Claude Code shell, which inherits this session's env and stdin and does not count"
642
+ run:
643
+ - "Stop. Explain to the operator what you were trying to do and why, and let THEM decide whether to pause/resume/toggle a gate from their own terminal. This is the only way to unblock this gate: it is an unconditional deny (operator_only: true) that no in-session evidence — a ledger write, a marker file, a flag — can ever satisfy; the only remaining gap is bash_match's regex coverage of exotic shell shapes, not this evaluation (see docs/okf/pause-vs-gate-kill-switch.md)."
644
+
645
+ - name: deny-session-env-strip
646
+ description: Deny Bash attempts to strip or unset the agent-session env vars that harness pause/resume check (\$CLAUDE_CODE_SESSION_ID, \$CLAUDE_SESSION_ID, \$CODEX_SESSION_ID). Closes the one-liner that otherwise defeats refuseIfAgentShell.
647
+ trigger:
648
+ event: PreToolUse
649
+ match: "Bash"
650
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(env\\b[^;\\n|&]*-u\\s*(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|env\\b[^;\\n|&]*--unset(?:=|\\s+)(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|unset\\s+(\\S+\\s+)*(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)\\b|(CLAUDE_CODE_SESSION_ID|CLAUDE_SESSION_ID|CODEX_SESSION_ID)=(?=\\s))'
651
+ operator_only: true
652
+ hook: deny-session-env-strip-bash
653
+ enforcement: block
654
+ ux:
655
+ cannot: "You cannot strip or unset your own agent-session id env vars from Bash."
656
+ required:
657
+ - "no legitimate reason from inside this session: stripping \$CLAUDE_CODE_SESSION_ID / \$CLAUDE_SESSION_ID / \$CODEX_SESSION_ID is recognised as an attempt to defeat the harness pause/resume agent-shell check"
658
+ run:
659
+ - "Stop. If you believe you have a legitimate reason to run a command without one of these env vars set, ask the OPERATOR to do it from their own terminal instead. This gate is an unconditional deny (operator_only: true); see docs/okf/pause-vs-gate-kill-switch.md for the honest trust model and the residual bash_match coverage gap."
660
+
661
+ - name: deny-pause-sentinel-forgery
662
+ description: Deny Bash writes (redirect, tee, cp) to the harness pause sentinel file (.harness-paused). The sentinel is unsigned JSON; a forged file silences every gate exactly like a real operator pause. Reads (cat, stat) are unaffected.
663
+ trigger:
664
+ event: PreToolUse
665
+ match: "Bash"
666
+ bash_match: '(^|\\n|;|\\||&&|\\()\\s*(\\w+=\\S*\\s+)*(tee|cp)\\b[^;\\n|&]*\\.harness-paused\\b|>{1,2}\\s*\\S*\\.harness-paused\\b'
667
+ operator_only: true
668
+ hook: deny-sentinel-write-bash
669
+ enforcement: block
670
+ ux:
671
+ cannot: "You cannot write to the harness pause sentinel file (.harness-paused)."
672
+ required:
673
+ - "the OPERATOR to run \`harness pause\`/\`harness resume\` themselves, from a terminal outside your agent session, never a direct write to the sentinel file"
674
+ run:
675
+ - "Stop. Do not write, redirect, tee, or copy anything to .harness-paused. Ask the OPERATOR to run harness pause / harness resume themselves if the session genuinely needs gates silenced. This gate is an unconditional deny (operator_only: true); see docs/okf/pause-vs-gate-kill-switch.md for the honest trust model and the residual bash_match coverage gap."
676
+
525
677
  # Full inherits the Solo/Team understanding-gate stack: the Stop hook
526
678
  # persists each Understanding Report and the PreToolUse pre-tool-use
527
679
  # blocker refuses Edit/Write/Bash until the report is approved. Drop
@@ -540,6 +692,15 @@ policy_packs:
540
692
  # is a filesystem marker and the mcp ledger_add path no longer
541
693
  # satisfies the gate; the canonical unblock surface is the
542
694
  # operator-approval prompt.
695
+ #
696
+ # KEEP IN SYNC (task 68b9ad9c): this text must match
697
+ # defaultProducers() in
698
+ # src/policy-packs/builtin/understanding-before-execution.ts —
699
+ # that function is what \`harness pack reseed\` and \`harness doctor\`'s
700
+ # divergence warning treat as "the shipped template". A wording fix
701
+ # landed here without updating defaultProducers() would make reseed
702
+ # silently pull operators BACK to the stale wording. Pinned by
703
+ # tests/cli/init-templates-ux-parity.test.ts.
543
704
  producers:
544
705
  - kind: ask
545
706
  command: harness approve understanding
@@ -552,13 +713,17 @@ policy_packs:
552
713
  # shape. Engine details (the BLOCK reason naming session id /
553
714
  # marker / report state) still land in stderr for operator audit;
554
715
  # the agent only sees this.
716
+ #
717
+ # KEEP IN SYNC (task 68b9ad9c): see the producers: comment above —
718
+ # same rationale applies here, against defaultUx("grill_me") in the
719
+ # same builtin module.
555
720
  ux:
556
721
  cannot: "You cannot use write-capable tools yet."
557
722
  required:
558
723
  - "an approved Understanding Report for this session"
559
724
  run:
560
725
  - "Write an Understanding Report covering: Current Understanding, Intended Outcome, Derived Todos, Acceptance Criteria, Assumptions, Open Questions, Out Of Scope, Risks, Verification Plan, Prior Art (state what you searched for an existing solution and what you found, with an explicit adopt-or-build judgment)"
561
- - "Run \`harness approve understanding\` (bare, no pipes, chaining, or redirection) and approve the prompt"
726
+ - "Run \`harness approve understanding\` with the report attached as a quoted heredoc (harness approve understanding <<'UNDERSTANDING_REPORT' ...report... UNDERSTANDING_REPORT) so it is persisted for audit, then approve the prompt; the heredoc is the only extra shell shape the gate allows (no pipes, chaining, or other redirection)"
562
727
  # approval_lifecycle (agent-tasks/d8ee60ca + harness/f54e0ecb,
563
728
  # v0.18.0+): expire the approval marker on task-completion
564
729
  # boundaries so a multi-task session re-prompts for an
@@ -613,6 +778,11 @@ policy_packs:
613
778
  # plain-language { cannot, required, run } shape. Engine details
614
779
  # (the BLOCK reason naming session id / freshness window) stay
615
780
  # on stderr for operator audit.
781
+ #
782
+ # KEEP IN SYNC (task 68b9ad9c): this text must match defaultUx() in
783
+ # src/policy-packs/builtin/branch-protection.ts — see the identical
784
+ # note on the understanding-before-execution pack above for why.
785
+ # Pinned by tests/cli/init-templates-ux-parity.test.ts.
616
786
  ux:
617
787
  cannot: "You cannot edit files on protected branch \${BRANCH} yet."
618
788
  required:
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/cli/init/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB/B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4oB5B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI7D,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/cli/init/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB/B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAszB5B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI7D,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC"}
package/dist/cli/list.js CHANGED
@@ -76,7 +76,9 @@ function buildPolicyRows(manifest) {
76
76
  enforcement: p.enforcement,
77
77
  event: p.trigger.event,
78
78
  hook: p.hook,
79
- requires_tag: p.requires.ledger_tag,
79
+ // `operator_only: true` policies (task 2cc73f55) declare no
80
+ // `requires:` at all — there is no tag to show.
81
+ requires_tag: p.requires?.ledger_tag ?? "(operator-only)",
80
82
  }));
81
83
  }
82
84
  function buildWorkflowRows(manifest) {
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface ApproveReportHeredoc {
2
+ /** The executable command part (first line, heredoc intro stripped). */
3
+ command: string;
4
+ /** The heredoc delimiter word. */
5
+ delimiter: string;
6
+ /** The heredoc body — the Understanding Report markdown. */
7
+ body: string;
8
+ }
9
+ /**
10
+ * Parse the report-heredoc shape. Returns null unless the WHOLE command
11
+ * is exactly one clean `harness approve ...` line plus one single-quoted
12
+ * heredoc and nothing else.
13
+ */
14
+ export declare function parseApproveReportHeredoc(command: string): ApproveReportHeredoc | null;
15
+ /**
16
+ * The operator-approval command `harness approve ...`. See module
17
+ * header for the accepted shapes and the rationale for strictness.
18
+ */
19
+ export declare function isEscapeCommand(command: string): boolean;
@@ -0,0 +1,120 @@
1
+ // Escape-command matcher for the understanding-gate PreToolUse hook.
2
+ //
3
+ // The operator-approval command `harness approve ...` must not be
4
+ // hard-denied by the gate (denying the unblock surface makes the gate
5
+ // un-recoverable from inside the session), so the hook defers it to the
6
+ // interactive permission prompt instead. This module decides what
7
+ // qualifies. Deliberately strict: anything that could smuggle other work
8
+ // past the gate (chaining, substitution, redirection) is rejected.
9
+ //
10
+ // Two accepted shapes:
11
+ // 1. Single line: `harness approve ...` with no shell metacharacters.
12
+ // 2. Report heredoc (task 61fd36db): the same command with the
13
+ // Understanding Report attached as a quoted heredoc on stdin:
14
+ //
15
+ // harness approve understanding <<'UNDERSTANDING_REPORT'
16
+ // ## Understanding Report
17
+ // ...
18
+ // UNDERSTANDING_REPORT
19
+ //
20
+ // This is the report-capture channel: the Stop-hook producer fires
21
+ // only at END of turn (after approve already ran), and current
22
+ // Claude Code builds do not reliably persist mid-turn assistant
23
+ // text to the transcript JSONL, so the command itself is the only
24
+ // channel that reliably carries the report to `harness approve
25
+ // understanding`. As a bonus the operator reads the full report
26
+ // inside the permission prompt before approving.
27
+ //
28
+ // Heredoc safety: the delimiter must be single-quoted (no parameter or
29
+ // command substitution inside the body), the command part before `<<`
30
+ // must match a strict character WHITELIST (so no quoting/escaping trick
31
+ // can change how the shell tokenizes the line — see
32
+ // heredocCommandPartIsClean), the terminator is the FIRST line exactly
33
+ // equal to the delimiter (mirroring shell semantics for a plain `<<'X'`
34
+ // intro, which the whitelist guarantees is the only intro that can
35
+ // reach it), and nothing but whitespace may follow it. Any deviation —
36
+ // unquoted delimiter, second redirect, escaped/quote-obscured intro,
37
+ // trailing commands, unterminated body — fails closed to the ordinary
38
+ // gate block.
39
+ /** Metacharacters rejected in the executable (non-heredoc-body) part. */
40
+ const COMMAND_META_RE = /[;&|<>]/;
41
+ function commandPartIsClean(part) {
42
+ if (COMMAND_META_RE.test(part))
43
+ return false;
44
+ if (part.includes("`") || part.includes("$("))
45
+ return false;
46
+ return /^harness\s+approve\b/.test(part);
47
+ }
48
+ // The heredoc command part is held to a WHITELIST, not the blacklist
49
+ // above (review 2026-07-10, HIGH): a backslash-escaped redirect
50
+ // (`harness approve understanding \<<'UR'`) slipped the blacklist —
51
+ // the `<` characters were consumed by the heredoc-intro regex and `\`
52
+ // is not a rejected metachar — but bash reads `\<` as a literal `<`
53
+ // plus a file redirect, so no heredoc exists and the "body" lines
54
+ // execute as ordinary commands. A legitimate approve command part only
55
+ // ever contains the binary name, subcommand, flags, ids, and paths;
56
+ // everything else (backslashes, quotes, `$`, parens, globs) fails
57
+ // closed. The single-line shape keeps the blacklist for back-compat:
58
+ // it admits no `<` at all, so this divergence class cannot arise there.
59
+ const HEREDOC_COMMAND_PART_ALLOWED_RE = /^[A-Za-z0-9_\s,./=:@~-]*$/;
60
+ function heredocCommandPartIsClean(part) {
61
+ if (!HEREDOC_COMMAND_PART_ALLOWED_RE.test(part))
62
+ return false;
63
+ return commandPartIsClean(part);
64
+ }
65
+ /**
66
+ * Parse the report-heredoc shape. Returns null unless the WHOLE command
67
+ * is exactly one clean `harness approve ...` line plus one single-quoted
68
+ * heredoc and nothing else.
69
+ */
70
+ export function parseApproveReportHeredoc(command) {
71
+ const trimmed = command.trim();
72
+ const nl = trimmed.indexOf("\n");
73
+ if (nl === -1)
74
+ return null;
75
+ const head = trimmed.slice(0, nl);
76
+ // CR anywhere in the head means the line structure is not what the
77
+ // shell will see; fail closed. (Body CRs are inert data.)
78
+ if (head.includes("\r"))
79
+ return null;
80
+ // Lazy `.*?` + end-anchor: a second redirect after the heredoc intro
81
+ // forces the intro into the command part, where the metachar check
82
+ // rejects it.
83
+ const m = /^(.*?)<<\s*'([A-Z_][A-Z0-9_]*)'\s*$/.exec(head);
84
+ if (!m)
85
+ return null;
86
+ const commandPart = m[1].trimEnd();
87
+ const delimiter = m[2];
88
+ if (!heredocCommandPartIsClean(commandPart))
89
+ return null;
90
+ const rest = trimmed.slice(nl + 1).split("\n");
91
+ // First line EXACTLY equal to the delimiter terminates the body — the
92
+ // same rule the shell applies — so a delimiter line smuggled early in
93
+ // the body shifts the terminator up and the trailing content check
94
+ // below rejects the command as a whole.
95
+ const termIdx = rest.findIndex((line) => line === delimiter);
96
+ if (termIdx === -1)
97
+ return null;
98
+ const after = rest.slice(termIdx + 1);
99
+ if (!after.every((line) => line.trim() === ""))
100
+ return null;
101
+ return {
102
+ command: commandPart,
103
+ delimiter,
104
+ body: rest.slice(0, termIdx).join("\n"),
105
+ };
106
+ }
107
+ /**
108
+ * The operator-approval command `harness approve ...`. See module
109
+ * header for the accepted shapes and the rationale for strictness.
110
+ */
111
+ export function isEscapeCommand(command) {
112
+ const trimmed = command.trim();
113
+ if (!trimmed.includes("\n")) {
114
+ if (trimmed.includes("\r"))
115
+ return false;
116
+ return commandPartIsClean(trimmed);
117
+ }
118
+ return parseApproveReportHeredoc(trimmed) !== null;
119
+ }
120
+ //# sourceMappingURL=approve-escape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approve-escape.js","sourceRoot":"","sources":["../../../src/cli/pack/approve-escape.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,30 @@ export interface ManifestLoadResult {
45
45
  * }
46
46
  */
47
47
  export declare function loadManifestOrInjected(loaderOpts: LoaderOptions, injected: Manifest | undefined): ManifestLoadResult;
48
+ /**
49
+ * Return the first candidate that is a non-empty string, else `undefined`.
50
+ * Used to resolve a field that may arrive under one of several tolerated
51
+ * synonyms (e.g. Codex's `tool_name` vs `tool`, or `last_assistant_message`
52
+ * as a direct shortcut). Was three byte-identical private copies (the Codex
53
+ * pre-tool-use / stop / post-tool-use hooks) before task a1348c89.
54
+ */
55
+ export declare function pickString(...candidates: unknown[]): string | undefined;
56
+ /**
57
+ * Resolve a PostToolUse-style event's tool arguments: prefer `tool_input`
58
+ * (the field name real Codex sends, matching Claude Code's own
59
+ * convention — `hook-codex-post-tool-use.ts`'s own doc comment) and fall
60
+ * back to `raw_input` (harness's originally-published portable wire
61
+ * format, still accepted for any shim built against harness's earlier
62
+ * Codex adapter). Mirrors that hook's private `resolveToolInput`
63
+ * (task a1348c89); extracted here so the agent-tasks-specific
64
+ * PostToolUse hooks added later for Codex parity (track-active-claim,
65
+ * stay-in-scope — task cf4cdc93) share the identical resolution instead
66
+ * of hand-copying it a second and third time.
67
+ */
68
+ export declare function resolveToolInput(event: {
69
+ tool_input?: unknown;
70
+ raw_input?: unknown;
71
+ }): unknown;
48
72
  /**
49
73
  * Parse the optional `ux:` block from a pack config (task 19e293c6). This
50
74
  * body existed as four byte-identical copies (hook-pre-tool-use,
@@ -11,6 +11,15 @@
11
11
  // because error semantics differ per hook).
12
12
  // 4. pack `config.ux` parsing (label-parameterized; formerly four
13
13
  // byte-identical copies, task 19e293c6).
14
+ // 5. `pickString` — first-defined-string-wins candidate picker (was three
15
+ // byte-identical copies across the Codex hook trio — pre-tool-use,
16
+ // stop, post-tool-use — before task a1348c89 extracted it here).
17
+ // 6. `resolveToolInput` — tool_input-with-raw_input-fallback resolver
18
+ // (task cf4cdc93 review finding: track-active-claim and
19
+ // stay-in-scope read ONLY `tool_input`, silently no-op-ing on a
20
+ // Codex shim that sends `raw_input` instead — the exact shape
21
+ // `hook-codex-post-tool-use.ts`'s own private `resolveToolInput`
22
+ // already handles).
14
23
  //
15
24
  // Not used by:
16
25
  // - hook-runtime-reality.ts: its stdin reader uses async iteration + an
@@ -87,7 +96,44 @@ export function loadManifestOrInjected(loaderOpts, injected) {
87
96
  return { manifest: loaded.manifest, manifestPath: loaded.resolved.base };
88
97
  }
89
98
  // ---------------------------------------------------------------------------
90
- // 4. Pack `config.ux` parser
99
+ // 4. First-defined-string-wins candidate picker
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Return the first candidate that is a non-empty string, else `undefined`.
103
+ * Used to resolve a field that may arrive under one of several tolerated
104
+ * synonyms (e.g. Codex's `tool_name` vs `tool`, or `last_assistant_message`
105
+ * as a direct shortcut). Was three byte-identical private copies (the Codex
106
+ * pre-tool-use / stop / post-tool-use hooks) before task a1348c89.
107
+ */
108
+ export function pickString(...candidates) {
109
+ for (const c of candidates) {
110
+ if (typeof c === "string" && c.length > 0)
111
+ return c;
112
+ }
113
+ return undefined;
114
+ }
115
+ // ---------------------------------------------------------------------------
116
+ // 5. tool_input-with-raw_input-fallback resolver
117
+ // ---------------------------------------------------------------------------
118
+ /**
119
+ * Resolve a PostToolUse-style event's tool arguments: prefer `tool_input`
120
+ * (the field name real Codex sends, matching Claude Code's own
121
+ * convention — `hook-codex-post-tool-use.ts`'s own doc comment) and fall
122
+ * back to `raw_input` (harness's originally-published portable wire
123
+ * format, still accepted for any shim built against harness's earlier
124
+ * Codex adapter). Mirrors that hook's private `resolveToolInput`
125
+ * (task a1348c89); extracted here so the agent-tasks-specific
126
+ * PostToolUse hooks added later for Codex parity (track-active-claim,
127
+ * stay-in-scope — task cf4cdc93) share the identical resolution instead
128
+ * of hand-copying it a second and third time.
129
+ */
130
+ export function resolveToolInput(event) {
131
+ if (event.tool_input !== undefined)
132
+ return event.tool_input;
133
+ return event.raw_input;
134
+ }
135
+ // ---------------------------------------------------------------------------
136
+ // 6. Pack `config.ux` parser
91
137
  // ---------------------------------------------------------------------------
92
138
  /**
93
139
  * Parse the optional `ux:` block from a pack config (task 19e293c6). This
@@ -1 +1 @@
1
- {"version":3,"file":"hook-bootstrap.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-bootstrap.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -358,6 +358,11 @@ export async function runPackHookBranchProtectionCli(opts = {}) {
358
358
  const ackEcho = check.hasAck
359
359
  ? ` [audit: ledger ${check.ackContent ?? ACK_TAG_PREFIX} present, no longer satisfies the gate]`
360
360
  : "";
361
+ // Distinct audit note when the override marker FILE existed but failed
362
+ // signature verification (harness/f9485cc7) — missing/invalid signature,
363
+ // wrong alg, or a tampered payload — so it reads apart from the routine
364
+ // "no operator override marker" case below.
365
+ let markerForgedNote = "";
361
366
  if (generatedDir !== undefined) {
362
367
  const markerCheck = checkBranchProtectionMarker(generatedDir, sessionId);
363
368
  if (markerCheck.matched) {
@@ -365,6 +370,9 @@ export async function runPackHookBranchProtectionCli(opts = {}) {
365
370
  note(diagnostic);
366
371
  return { exitCode: 0, blocked: false, diagnostic };
367
372
  }
373
+ if (markerCheck.forged) {
374
+ markerForgedNote = ` [forged/unsigned override marker rejected: ${markerCheck.detail}]`;
375
+ }
368
376
  }
369
377
  if (check.hasFreshProducer) {
370
378
  const diagnostic = `fresh producer tag (${check.freshProducerContent ?? NON_PROTECTED_TAG_PREFIX}); allowing`;
@@ -373,7 +381,7 @@ export async function runPackHookBranchProtectionCli(opts = {}) {
373
381
  }
374
382
  const why = check.degraded !== null
375
383
  ? `ledger degraded (${check.degraded}); refusing on failsafe`
376
- : `no fresh ${NON_PROTECTED_TAG_PREFIX} tag (${check.totalEntries} entries scanned) and no operator override marker${ackEcho}`;
384
+ : `no fresh ${NON_PROTECTED_TAG_PREFIX} tag (${check.totalEntries} entries scanned) and no operator override marker${ackEcho}${markerForgedNote}`;
377
385
  const diagnostic = `BLOCK — ${why}`;
378
386
  note(diagnostic);
379
387
  stdout.write(`${blockJson(toolName, branch, why, protectedList, configUx, sessionId)}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"hook-branch-protection.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-branch-protection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-branch-protection.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-branch-protection.ts"],"names":[],"mappings":"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"}