fix(addie): keep github issue tools reachable across Slack routing#2979
Merged
Conversation
- Add create_github_issue to ALWAYS_AVAILABLE_TOOLS alongside draft_github_issue. - Drop "draft GitHub issues" from the content set description so the unavailable-sets hint can't claim the capability is off (root cause of Addie responding "I don't have GitHub issue tools" in Slack threads routed to knowledge). - Extend buildUnavailableSetsHint with an explicit "always available" section listing github + escalation + account-linking so the model can't conflate set-scoped descriptions with per-tool availability. - Tighten draft_github_issue with an explicit repo allowlist (adcp, adcp-client, adcp-client-python, adcp-go) — Addie was inventing non-existent repo names like `creative-agent` from conversation context. - Point create_github_issue connect/unavailable responses at the canonical /member-hub page (Addie was hallucinating /account). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Derive buildUnavailableSetsHint's "always available" list from a blurb map filtered through ALWAYS_AVAILABLE_TOOLS membership, plus a drift-guard test that asserts every advertised tool actually is always-available. Rename is now observable; removal is a test fail. - Drop get_account_link from the reminder — it's excluded in public channels via ENROLLMENT_TOOLS, and the hint couldn't tell. - Remove draft_github_issue / create_github_issue from the content set's tools array. They live in ALWAYS_AVAILABLE_TOOLS; the duplication was the last place someone could regress this. - Flip language: "callable in every conversation / call it instead of saying you can't" — affirmative directive is easier for Claude to follow than a negative prohibition. - draft_github_issue now auto-routes unknown repos to adcp with a "Subproject:" note prepended to the body, instead of returning a rejection string that Addie might paste verbatim. - create_github_issue not-connected copy leads with the Connect offer, not the failure reason. Reauth branch split out so the happy new-user case stays a one-line pitch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 24, 2026
Closed
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
In Slack, Addie was telling users "I don't have GitHub issue tools available in this conversation" — even though
draft_github_issuehas always been inALWAYS_AVAILABLE_TOOLS. Root cause: the "unavailable tool sets" hint described thecontentset as "draft GitHub issues, propose news sources, …". Claude read that and hallucinated unavailability.Changes:
create_github_issuejoinsdraft_github_issueinALWAYS_AVAILABLE_TOOLS(they're a pair).contentset description no longer claims ownership of GitHub issuing.buildUnavailableSetsHintnow appends an explicit "Capabilities That ARE Always Available" section so the model can't conflate set-scoped descriptions with per-tool availability.draft_github_issueenforces a repo allowlist (adcp,adcp-client,adcp-client-python,adcp-go) — Addie was inventing repo names likecreative-agentfrom conversation context.create_github_issueunavailable/connect responses now point at the canonical/member-hub(Addie was hallucinating/account).Test plan
tests/addie/member-tools.test.ts+ 17server/tests/unit/addie/tool-sets.test.ts). Added coverage for always-available github tools, content description,buildUnavailableSetsHint, repo allowlist accept/reject.draft_github_issue(safe default even when user says "create").create_github_issueask → unavailable-fallback now names/member-hubcorrectly.creative-agentrepo → rejected, Addie falls back toadcpand notes the subproject in the body.wg-buildersscenario in the screenshot no longer produces "I don't have GitHub issue tools" — easiest check is a new Slack message.🤖 Generated with Claude Code