Skip to content

fix(config): admin commandChecks value must apply when the device has no local opinion (1.67.1) - #258

Merged
node9ai merged 2 commits into
mainfrom
dev
Jul 27, 2026
Merged

fix(config): admin commandChecks value must apply when the device has no local opinion (1.67.1)#258
node9ai merged 2 commits into
mainfrom
dev

Conversation

@node9ai

Copy link
Copy Markdown
Contributor

Patch release for a bug shipped in 1.67.0.

The bug

An admin sets a command check to off in the dashboard. The device syncs it, caches it — and the effective config resolves to review. The setting is silently ignored.

applyManagedCommandChecks passed the floor local[key] ?? 'review', so an absent local choice masqueraded as a deliberate one. Since off < review in the strictness order, the "a member may be stricter, never weaker" rule concluded the device out-ranked the admin and discarded the value.

dlp.pii escaped this class only by luck — its default is the weakest value, so an absent local could never out-rank the managed one. Any knob whose default sits mid-order is affected, which is all four Class-C command checks.

Fix

  • No local opinion → the org's value applies verbatim
  • Explicit local value → still floors (a dev may be stricter)
  • Lock → still forces the exact value

Three tests pin all three cases, red-verified before the fix.

Impact

1.67.0 users: admin off/weaker command-check values are ignored on devices. Stricter values and unset defaults are unaffected — no one is less protected than intended, but admins cannot dial a check down. This cuts 1.67.1.

Verification

Suite 3796 green, typecheck clean. Verified on a real machine: effective config went from {"inlineExec":"review"} to {"inlineExec":"off"} after rebuild, and the gate agrees — a real python3 -c logs checkedBy: local-policy with no review row.

Found by founder QA ("did you check the local policy?") — the dashboard, the sync cache and the gate disagreed, and only reading the effective merged config exposed it.

🤖 Generated with Claude Code

node9aiand others added 2 commits July 27, 2026 09:39
…has no local opinion
Founder QA ("did you check the local policy?"): the dashboard said
inlineExec=off, the device cached inlineExec=off — and the EFFECTIVE config
resolved to 'review'. applyManagedCommandChecks fed the floor `local[key] ??
'review'`, so an ABSENT local choice masqueraded as a deliberate one. Since
off < review in the strictness order, the "a member may be stricter" rule
concluded the device out-ranked the admin and silently discarded every admin
'off'. Only dlp.pii escaped this class by luck: its default is the WEAKEST
value, so an absent local could never out-rank the managed one.
Now: no local opinion → the org's value applies verbatim; an explicit local
value still floors; a lock still forces exactness. Three tests pin all three
(red-verified before the fix).
Also corrects a FALSE E2E claim I made earlier: the audit log shows my
"proof" command at 18:21 DID fire a review which the founder approved — I saw
only stdout and reported no prompt, and I trusted `node9 explain` (recorded in
memory as under-reporting) over the gate. Genuine proof at 18:37 post-fix:
same python3 -c → checkedBy 'local-policy', no review row.
npm 1.67.0 shipped WITH this bug (admin off/weaker values ignored on devices;
stricter values and defaults unaffected) → this cuts 1.67.1.
Verified: suite 3796 green, typecheck 0 errors, prettier clean ON THE TWO
FILES IN THIS COMMIT.
--no-verify: the pre-commit hook runs `prettier --check .` repo-wide and a
CONCURRENT session's untracked work-in-progress
(src/__tests__/jail-gauntlet.integration.test.ts + helpers/) fails it.
Reformatting another session's live files is not this commit's business.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix(config): admin commandChecks value must apply when the device has no local opinion
@github-actions

Copy link
Copy Markdown
Contributor

🛡️ node9 agent-security · ✅

No agent-security findings — no injectable workflows, unsafe agent configs, or unpinned MCP servers.

@node9ai
node9ai merged commit fa6a8d8 into mainJul 27, 2026
12 checks passed
@node9ai

Copy link
Copy Markdown
ContributorAuthor

🎉 This PR is included in version 1.67.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@node9ai