fix(grounding): allowlist channels the turn reached by tool #797
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!797
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/bk79-grounding-tools"
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?
Closes #794.
The defect
ValidateGroundingtakes the turn's completed tool calls asexecutedand then builds the channel allowlist without them. The proof that#generalwas real sat unused in the function's own parameter list.It is structural rather than a one-off. The deploy guardfiles fix each channel into its own tool path because
restrictcannot glob snowflakes and the snowflakes share no prefix, so a channel's name lives in the tool name (list_general-message) and in the tool result, and never in supplied context. The allowlist could therefore essentially never contain a channel the lane reached by tool. Echo has the same shape with hereco-channels.The fix
channelsReachedByToolderives the allowlist from completed tool names only. A tool name is generated from the guardfile, which is deploy-authored, reviewed, and fixed at image build, so this adds no attacker-controlled input. Tool results stay out: message bodies are community text, and a member posting#nonexistentwould otherwise teach the check to accept a channel nobody has.Outcome is not consulted. A failed call still proves the channel exists, and a reply reporting the failure names it correctly.
Acceptance
TestValidateGroundingAllowsChannelsNamedByToolNames, covering the server-prefixed, hyphenated,get_and bare-name forms the guardfiles produce.TestValidateGroundingStillRefusesChannelsOnlyInToolResults.TestValidateGroundingRefusesChannelsNoToolReached.TestValidateGroundingAcceptsTheRefusedRosterSummary.ward gateis green: build, policy-check, vet, test, test-skips, pre-commit.Not decided here
Whether the rule should cover channels named in supplied context that no tool touched, and whether a channel the bot cannot see should still be refusable. The issue calls both policy rather than plumbing, and this change leaves them alone.
Reasoning is written up in
docs/sirens-echo-grounding-channels.md.