← Back to PRs

#14189: ui: suppress no-op tool cards

by ramarnat open 2026-02-11 17:03 View on GitHub →
app: web-ui size: S
#### Summary Tool calls that return no output were still rendering empty or near-empty cards in the chat UI. This is noisy and confusing for users because it implies “something happened” without any usable result, and it can clutter the transcript when tools are run opportunistically (e.g., background checks or silent validations). We now allow tools to opt into suppression when there is no result text, and we filter both the call card and an empty result card in those cases. Separately, when a tool finishes with an error but provides no output, we now render a short fallback message so the user sees a meaningful error state rather than a blank card. #### Screenshots or Video Not captured. #### Accessibility Impact None expected; this removes empty cards and adds plain-text error context. #### Tests - `pnpm test` (failed: `src/agents/bash-tools.exec.path.test.ts` — login shell PATH includes local `.zshenv`/host PATH entries in this environment) #### Manual Testing ### Prerequisites - None. ### Steps 3. Trigger a tool call that errors with no output and verify the fallback error text is displayed. <!-- greptile_comment --> <h3>Greptile Summary</h3> This PR implements tool card suppression for tools that return no output, addressing UI clutter from empty cards. The implementation correctly handles per-tool suppression by checking each tool individually against its `suppressWhenNoOutput` flag and whether that specific tool's result contains text. When a tool errors without output, a fallback message "Error (details hidden)" is now displayed instead of a blank card. The test coverage includes the critical multi-tool scenario where a suppressible tool with empty output coexists with other tools that have output, ensuring suppression works independently per tool. <h3>Confidence Score: 5/5</h3> - This PR is safe to merge with no identified issues - The implementation correctly handles per-tool suppression logic, includes comprehensive test coverage for all key scenarios (including the critical multi-tool case), and the error handling provides a sensible fallback message. Previous review concerns about global suppression checks have been fully addressed in the current implementation. - No files require special attention <sub>Last reviewed commit: 16b37bc</sub> <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs