fix(local-agent): scope install/uninstall to the triggering tool only#176
Merged
jeff-r2026 merged 2 commits intoJul 9, 2026
Merged
Conversation
installDownloadedResource and uninstallResource previously passed the full teamConfig (all toolPaths) to SkillsHandler/RulesHandler, causing a resource distributed to one tool (e.g. codebuddy) to be installed into every other tool directory that exists on disk (workbuddy, claude). Narrow toolPaths to only the current context.tool so resources land exclusively in the tool that received the sync command. --story=1032029153857553 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When tool is not in toolPaths, explicitly throw so the error is surfaced via ack(failed) rather than silently writing manifest entries with no corresponding files on disk. --story=1032029153857553 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
toolPathsininstallDownloadedResourceanduninstallResourceto only the currentcontext.toolRoot Cause
SkillsHandler.pullItem()andRulesHandler.pullAllRules()iterate over all entries inteamConfig.toolPathsand install to every tool directory that exists on disk. WheninstallDownloadedResourcepassed the fullteamConfig, a skill/rule distributed to codebuddy would also land in.workbuddy/skills/,.claude/skills/, etc.Fix
Construct a scoped
teamConfigwith only the triggering tool's path before passing it to the resource handlers. Thetoolparameter is threaded fromexecuteCommand'scontext.tool(which comes from the--toolCLI flag on the hook).Test plan
.codebuddy/skills/, not.workbuddy/skills/.codebuddy/skills/.workbuddy/rules/npx tsc --noEmitpassesnpm run buildsucceeds🤖 Generated with Claude Code