Conversation
…interview-protocol.md, skills/checkpoints): flip exec-approval's tier-4 default to auto, and wire "stop asking before every wrapper command" into every harness, not just Claude
Per the owner's ask ("too much approval clicking ... not all will have Claude"): exec-approval.sh's
tier-4 default flips from interview-mode-derived to auto ('ask' stays supported). State moves to
<project>/.mxtk/exec-approval, reading the old .claude/.exec-approval path as a compat fallback
(--set writes new, drops old). New bin/install-harness-permissions.sh extends the Claude-only
allow-lister to Copilot (chat.tools.terminal.autoApprove in .vscode/settings.json) and Aider
(yes-always: true in .aider.conf.yml); Cursor/Windsurf are user-level only, so nothing is written
for them. install-claude-permissions.sh now splits its allow-list across .claude/settings.json
(shared) and .claude/settings.local.json (absolute-path entries, gitignored). sync-project.sh
repairs projects wired under the old wording (both the pre-2026-09-15 and the 2026-09-15 "ask (the
default)" text), rewrites the mxcli-init Communication Style lines, and warns (never fetches) when
the toolkit clone is stale or off master -- gated by MXTK_SYNC_SKIP_CLONE_CHECK=1 so the toolkit's
own test suite (which necessarily runs from a feature branch) isn't a permanent false positive.
init-project.sh writes "Exec approval: auto" into PROJECT.md, adds an intake question, and
gitignores .mxtk/ + .claude/settings.local.json. toolkit-guide.html gains a "First session on your
harness" table; README points to it.
tests/wave2/test-exec-approval.sh (43/43) and the extended test-install-claude-permissions.sh
(56/56, six new sections for the harness installer) cover both. test-bug12-sync.sh (51/51) covers
the sync-project rewrites, including the stale-clone check's env override, without grepping any
warning text away.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…l-auto-default # Conflicts: # CHANGELOG.md
…ack under the render-routing baseline budget Merging origin/master (PR #84) grew the baseline tier independently (79916 -> 79993 words); combined with this branch's own exec-approval addition that pushed the total to 80008/80000. Tightened the same paragraph's wording (no content dropped) to 79985/80000, verified with LC_ALL=C.UTF-8 bin/render-routing.sh --check. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Direct lane (changes to
skills/,bug-logs/,bin/,project-bin/,project-tests/, pipelines)What changed and why (one paragraph):
Per the owner's ask ("too much approval clicking … not all will have Claude"),
bin/exec-approval.sh's tier-4 default flips from interview-mode-derived toauto(askstays supported); state moves to<project>/.mxtk/exec-approval, reading the old.claude/.exec-approvalpath as a compat fallback (--setwrites the new path and removes the old). Newbin/install-harness-permissions.shis the one entry point that wires "stop asking before every wrapper command" into every harness, not just Claude: it extendsinstall-claude-permissions.sh's allow-lister to Copilot (chat.tools.terminal.autoApprovein.vscode/settings.json) and Aider (yes-always: truein.aider.conf.yml, merged without disturbingwire-agents.sh's stamped block); Cursor/Windsurf are user-level-settings-only, so nothing is written for them.install-claude-permissions.shitself now splits its allow-list across.claude/settings.json(shared, relative entries) and.claude/settings.local.json(the absolute-$TOOLKIT_ROOTentries, gitignored).sync-project.shrepairs projects wired under the old prose (both the pre-2026-09-15 and the 2026-09-15 "ask(the default)" wording), rewrites the mxcli-init "execute it silently" / "Shall I go ahead?" Communication Style lines, and warns — never fetches — when the toolkit clone is stale or offmaster(MXTK_SYNC_SKIP_CLONE_CHECK=1opts the toolkit's own test suite out of that one check, since it necessarily runs from a feature branch; real users never set it).init-project.shwritesExec approval: autointoPROJECT.md, adds the matching intake question next to interview-mode, and gitignores.mxtk/+.claude/settings.local.json.toolkit-guide.htmlgains a "First session on your harness" table (§9);README.mdpoints to it.Field evidence — which real project this ran against / was observed in, and what it measured or fixed there (CLAUDE.md → "Shipping an instrument", rule 4; required for any instrument change):
No named client/real project this round — the field run used scratch projects scaffolded through the real
bin/init-project.shunder a scratchpad, twice, to verify both a fresh scaffold and an existing project migrating off the pre-2026-09-15 and 2026-09-15 prose. That run also surfaced and fixed two real bugs (not imagined-input ones): (1)bin/sync-project.sh'sgrep -qF "$old"broke for the "execute it silently" line specifically because it starts with a markdown bullet-, whichgrepread as an option flag —grep: invalid option -- ' '— silently swallowed by the function's|| return 1guard, so the rewrite was skipped with no error surfaced; fixed by adding--before the pattern at all three affected call sites, re-verified end-to-end (rewrite lands in one pass, second run is a true no-op). (2) Thetest-bug12-sync.shT0 fixture originally grepped the new stale-clone warning text away to keep passing — caught in review and replaced with a properMXTK_SYNC_SKIP_CLONE_CHECK=1env override instead, so T0 is back to asserting exit 0 / zero warnings with nothing filtered.LEAKGUARD_ALLOW_NO_DENYLIST=1 bin/check-no-client-data.shclean, 553 tracked files).mpr-under-app/), both platforms (macOS + Git Bash/Windows) considered — partial:bin/install-harness-permissions.shwrites project-root config files with no.mpr/single-vs-two-tree dependency, so that axis doesn't apply to it;bin/check-portability.sh(Bash 3.2, no bareexecFileSync, no mac-only tool assumptions) passed clean, but no Windows/Git Bash execution was actually performed this round — noted as a gap, not a claimCHANGELOG.mdline appended in this PR, crediting the source project or person (MendixMau)## BUG-DRAFT-<slug>:entries in this PRFixture counts (foreground, this tree):
tests/wave2/test-bug12-sync.sh bin/sync-project.sh— 51/51 (coordinator-run under a watcher, logscratchpad/bug12-final2.log)tests/wave2/test-exec-approval.sh bin/exec-approval.sh— 43/43tests/wave2/test-install-claude-permissions.sh bin/install-claude-permissions.sh— 56/56Other checks, all clean on the merged tree (
843056c+ the post-merge budget trimaebd39b):bin/check-scripts.sh(79/79 shell, 20/20 Node),bin/check-portability.sh(130 files),bin/check-pr-discipline.sh origin/master,LEAKGUARD_ALLOW_NO_DENYLIST=1 bin/check-no-client-data.sh,LC_ALL=C.UTF-8 bin/render-routing.sh --check(79985/80000 words — merging origin/master's independent baseline growth from PR #84 pushed the total to 80008/80000; trimmed the exec-approval paragraph inskills/interview-protocol.mdback down with no content dropped, seeaebd39b),bin/check-docs-numbering.sh.Merged
origin/master(33f8a93, #82/#83/#84) into this branch; the only conflict wasCHANGELOG.md's## 2026-09-16header (both entries kept, this PR's line first).🤖 Generated with Claude Code
https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Generated by Claude Code