fix(settings): retire the fleet allow wildcard the harness never accepted #1263
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1263
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/yq86"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Every session on every host opens with this banner:
BASE_ALLOWED_PERMISSIONS = ["*"]landed fleet-wide in agentic-os#1165 to drop the prompt on everything the deny list leaves open. Claude Code has never accepted it, in 2.1.221 or 2.1.246, so the rule has been inert since the day it landed and the banner is the only thing it produced.What changes
BASE_ALLOWED_PERMISSIONSgoes empty, and a newRETIRED_ALLOWED_PERMISSIONSprunes the stamped*back off converged hosts. That mirrors the deny-side retirement mechanism already in the file for exactly this case: without the prune, the dead rule sits in every~/.claude/settings.jsonforever.What does not change
Effective permissions. A
--dry-runagainst this host resolves to the same allow, deny, anddefaultModeit enforces today, minus the skipped rule:Nothing replaces the wildcard. An allow rule cannot express "everything" by design, and suppressing prompts is
defaultMode's job, which stays operator-local likeeffortLevel.Verification
just test tests/test_apply_base_claude_settings.py- 8 passed, including new allow-retirement and live/retired-disjoint coverage.pre-commit run --all-files- clean.docs/native-claude-credentials.mdstays at 120/120 lines.Repo-local half in coilyco-flight-deck/infrastructure, whose
.claude/settings.jsoncarried the same dead rule.`BASE_ALLOWED_PERMISSIONS = ["*"]` landed fleet-wide in agentic-os#1165 to drop the prompt on everything the deny list leaves open. Claude Code has never accepted it. An allow rule must name the tool it widens, so the harness skips the rule and prints a warning at every session start: permissions.allow: Invalid permission rule "*" was skipped: Wildcard tool name "*" is not supported in allow rules. So the rule has been inert since the day it landed, and the only thing it produced was that banner on every host. `BASE_ALLOWED_PERMISSIONS` goes empty and `RETIRED_ALLOWED_PERMISSIONS` prunes the stamped `*` back off converged hosts, mirroring the deny-side retirement mechanism that already exists for exactly this case. Without the prune the dead rule sits in every `~/.claude/settings.json` forever. Effective permissions do not move. A dry run against this host resolves to the same allow, deny, and defaultMode it enforces today, minus the skipped rule. Nothing is replaced: an allow rule cannot express "everything", and suppressing prompts is `defaultMode`'s job, which stays operator-local like `effortLevel`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Kai Siren <coilysiren@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Agent-Role: platform