Skip to content

fix(vibe): skip canonical categories with no Vibe tool instead of emitting inert tables - #2549

Merged
dyoshikawa merged 4 commits into
mainfrom
resolve-scrap-issue-2485-vibe-unmapped-categories
Aug 1, 2026
Merged

fix(vibe): skip canonical categories with no Vibe tool instead of emitting inert tables#2549
dyoshikawa merged 4 commits into
mainfrom
resolve-scrap-issue-2485-vibe-unmapped-categories

Conversation

@dyoshikawa

Copy link
Copy Markdown
Owner

Summary

Fixes #2485: toVibeToolName fell back to the canonical category name verbatim, so categories with no Vibe counterpart (e.g. glob, notebookedit) emitted [tools.<category>] tables for tools Vibe does not have — a deny authored there looked applied while being silently inert, the dangerous direction. Unlike the agenttask rename (#2441) there is no correct name to map to.

  • Generation now skips such categories with a warning naming the category and the affected rule count (the grokcli adapter's established pattern), via a hasVibeToolName own-property check. The skip also covers the enabled_tools/disabled_tools cleanup loop and the vibe.permission.<category>.sensitive_patterns override, so no phantom tool names are created or touched anywhere.
  • Import stays lenient: an unknown on-disk [tools.*] table still round-trips untouched (test added), and the empty-table artifact this issue also referenced was already removed by the permission = "never" emission in PR fix(vibe): stop misusing exclusive enabled_tools, preserve vibe-mcp-add servers, emit never, warn on shadowed global config #2543.
  • Docs: the Vibe permissions paragraph documents the skip.

Testing

  • New tests: deny on glob/notebookedit emits no tables, no disabled_tools entries, and warns per category; unknown on-disk [tools.custom_tool] table survives a generate.
  • pnpm cicheck green.

Closes #2485

🤖 Generated with Claude Code

cm-dyoshikawa and others added 4 commits July 31, 2026 18:11
…tting inert tables

toVibeToolName fell back to the canonical category name verbatim, so
categories with no Vibe counterpart (glob, notebookedit, ...) emitted
[tools.<category>] tables for tools Vibe does not have - a deny authored
there looked applied while being silently inert, the dangerous
direction. Unlike agent -> task (#2441) there is no correct name to
rename to, so the category is now skipped with a warning naming it and
the affected rule count (the grokcli adapter's pattern). The skip also
covers the enabled/disabled cleanup loop and the sensitive_patterns
override so no phantom tool names are touched. Unknown on-disk
[tools.*] tables still round-trip untouched.

Closes #2485

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…categories

Review follow-ups on PR #2549 (both reviewers flagged the same high):

- grep was missing from CANONICAL_TO_VIBE_TOOL_NAMES even though Vibe
  has a builtin grep tool, so the new skip logic would have dropped a
  previously-working grep deny with a factually wrong warning. Both
  maps now carry grep: "grep", with a test asserting [tools.grep]
  permission = "never" + disabled_tools emission.
- The sensitive_patterns override skip now warns too (explicit user
  config must not vanish silently), and a test covers the override and
  cleanup-loop skip paths (existing disabled_tools entry for an
  unmapped name survives untouched).
- The docs migration note mentions the stale inert [tools.glob] /
  [tools.notebookedit] tables earlier versions emitted (hand-removal,
  matching the unknown-tables-round-trip contract).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dyoshikawa
dyoshikawa merged commit b028511 into main Aug 1, 2026
9 checks passed
@dyoshikawa

Copy link
Copy Markdown
Owner Author

@dyoshikawa Thank you!

@dyoshikawa
dyoshikawa deleted the resolve-scrap-issue-2485-vibe-unmapped-categories branch August 1, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug(vibe): unmapped canonical permission categories emit [tools.<category>] entries Vibe has no tool for, so a deny is silently inert

2 participants