claude-code: write the home scope only into an agent account's own home
mesh/merge-gate pass: builds claude-code → ace, g14, novox, shanks; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh, merge-check-typescript.sh): main's version judged it; the change's judges the pull r…
mesh/delivery superseded: a newer head of the same pull request

On the nodes where the agent runs as the operator, the home scope wrote the
operator's own ~/.claude, whose rules and skills load in every session, and
any node's tool could be addressed from another (hq issue 340). Take it
only for the serving node, where its home is an agent account's own; never
place a bus item in the operator's home. Ignore the built binary.
This commit is contained in:
jochen
2026-10-09 09:41:52 +02:00
parent e139fb4dd9
commit 3677af6079
8 changed files with 148 additions and 14 deletions
+6 -2
View File
@@ -122,8 +122,12 @@ files, each a list of lines. For example `mesh-controller settings set claude-co
registered before; what the operator writes there is not judged, but an item that is not well formed is left out and
said in the render's answer. What was registered before is still rendered and may be unregistered.
The home scope, the operator account's own `~/.claude` (`nodes`: a list, or `"all"` for every node running
claude-code; absent is this node), is still registered through the tools:
The home scope is registered through the tools **only where the home belongs to an agent account of its own**
(hq ADR 0266, issue 340), and only for the node whose module serves the call. Where the agent runs as the operator,
the home is the operator's own `~/.claude`, whose rules and skills load in every session the operator starts, and
the tool runner cannot tell the operator from an agent: refused there, and for any other node, whose home cannot be
judged from here (call that node's own tool). A home item on the bus is never placed in the operator's own home,
and what the module placed there before is taken back unless the person changed it. Where it is taken:
- for each kind — `skill`, `agent`, `command`, `output_style`, `instructions` — `claude_code_<kind>_list`,
`_register`, `_unregister`. A skill is its files (`files`, or `content` for a lone SKILL.md);