Enhancement: Add --quiet flag to suppress tool call output

Open 💬 28 comments Opened Oct 11, 2025 by gmelli

Enhancement Request: Add --quiet flag to suppress tool call output

Summary

Add a --quiet (or --minimal-output) CLI flag to suppress tool call output in interactive mode, showing only the agent's final responses.

Use Case

Advisory agents that use wake-up protocols to load session state currently produce verbose output that obscures the clean summary users expect:

Current Behavior (verbose):

> wake up

⏺ my-executive-coach-aget v2.5.0 (Advisory)
  Co-Active Coaching • Strategic Thinking • Executive Leadership

⏺ Search(pattern: ".aget/sessions/SESSION_*.md")
  ⎿  Found 1 file (ctrl+o to expand)

⏺ Search(pattern: ".aget/commitments/active.yaml")
  ⎿  Found 1 file (ctrl+o to expand)

⏺ Search(pattern: ".aget/client_progress/*.yaml")
  ⎿  Found 1 file (ctrl+o to expand)

⏺ Read(.aget/sessions/SESSION_2025-10-08_10-00.md)
  ⎿  Read 38 lines

⏺ Read(.aget/commitments/active.yaml)
  ⎿  Read 21 lines

⏺ Read(.aget/client_progress/demo_user.yaml)
  ⎿  Read 23 lines

⏺ 📍 Last session: 2025-10-08 (2 days ago)
  📋 Active commitments: 2
     • Delegate architecture decision (due 10/15)
  📊 Progress: 1 session

  Ready for coaching session.

Desired Behavior (with --quiet):

> wake up

⏺ my-executive-coach-aget v2.5.0 (Advisory)
  Co-Active Coaching • Strategic Thinking • Executive Leadership

  📍 Last session: 2025-10-08 (2 days ago)
  📋 Active commitments: 2
     • Delegate architecture decision (due 10/15)
  📊 Progress: 1 session

  Ready for coaching session.

Problem

  • Tool call output adds 6+ lines of noise before the actual response
  • Users must scroll past technical details to see the summary
  • Particularly problematic for:
  • Demo/presentation scenarios
  • Advisory agents with initialization routines
  • Production use by non-technical users
  • Multi-agent workflows where tool verbosity compounds

Proposed Solution

Add a CLI flag:

claude --quiet           # Suppress tool call output
claude --minimal-output  # Alternative flag name

Behavior:

  • Suppress all tool call lines (Search, Read, Glob, etc.)
  • Show only agent text responses (text blocks)
  • Keep error messages visible (tool failures should still show)
  • Apply only to interactive mode (--print mode unaffected)

Configuration:
Could also support:

// ~/.config/claude/settings.json
{
  "outputMode": "quiet"  // or "verbose" (default)
}

Alternatives Considered

  1. Agent-level suppression - Not possible; tool output is CLI behavior
  2. Custom output formatter - No hook exists for this
  3. Accept verbosity - Reduces UX quality for production agents
  4. Screenshot workarounds - Manual, doesn't help actual users

Impact

Benefits:

  • Cleaner UX for advisory agents
  • Better demo/presentation experience
  • Reduced cognitive load for non-technical users
  • Opt-in (doesn't affect existing workflows)

Risks:

  • Users might miss important tool failures (mitigated by showing errors)
  • Less transparency about what agent is doing (user's choice via flag)

Related Issues

Similar to #8036 (feedback prompt complaints) - users want control over UI noise.

Environment

  • Claude Code v2.0.14
  • macOS/Linux (likely affects all platforms)
  • Use case: AGET framework advisory agents with internal state management

---

Would this enhancement be considered? Happy to provide additional context or participate in design discussion.

View original on GitHub ↗

28 Comments

hyper-lode · 9 months ago

Yes we absolutely need this. Since last week, claude code has been outputting ALL tool call output in the main stream which makes the terminal almost unusable

tmm3rd · 8 months ago

I would second this. I just created a startup agent to check for open PRs and GH Issues, but I really just want to see the output summary, not all of the intermediate steps. For me, this is just about suppressing a sub-agent's intermediate steps and contraining the output to the end result.

evolsb · 7 months ago

+1 on this. Running autonomous agent workflows in claude code, the tool output verbosity makes it hard to see actual results.

Our workaround: we set DISABLE_NON_ESSENTIAL_MODEL_CALLS=1 and CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=true but these only help marginally - they don't suppress the tool call lines.

The proposed --quiet flag or outputMode: compact setting would be exactly what's needed. Bonus: would also reduce context/token consumption in long sessions.

github-actions[bot] · 6 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

fprieur · 5 months ago

+1 for this feature.

Beyond a startup flag, I'd also love a mid-session toggle — the ability to switch between verbose and quiet mode without restarting Claude.

Use case: In a single session, I often go from simple tasks (where I trust Claude and don't need to see tool calls) to complex debugging (where I want full visibility). Currently:

  • /config → "Verbose output" controls LLM thinking, not tool call display
  • No keybind or command to toggle tool output visibility mid-session
  • Only option is restart with --quiet flag, which loses context

Proposal:

  1. --quiet flag at startup (as described in this issue)
  2. A /quiet command or keybind to toggle mid-session

This would make Claude Code much more usable for both autonomous agent workflows and interactive debugging sessions.

jaqkar · 4 months ago

+1 on this — with an MCP spec angle.

I'm running a custom MCP server where tool calls produce verbose results meant for the model, not the user. Two sources of noise:

  1. Tool call inputs — Claude Code renders the full arguments for every MCP tool call (e.g. the entire text being stored, full query parameters). There's no way for the server to control this.
  1. Tool call results — I've implemented annotations.audience: ["assistant"] on content blocks per the MCP spec to signal "this is for the model, not the user." Claude Code ignores it and renders everything. I've also used _meta on results to move diagnostic data out of content, which works — but for read operations where the model needs the data in content, there's no server-side fix.

The key UX issue: the agent needs to see raw tool results to reason about them and synthesize a response — but the user only needs the agent's synthesized summary, not the raw data. Right now both get the same view.

Honoring audience annotations would solve #2 without needing --quiet — MCP servers could self-declare which content blocks are model-context vs user-facing. The spec already supports it.

For #1, a --quiet flag or a config option like showToolOutput: minimal would help.

mgerasolo · 4 months ago

+1

It would also be very helpful if there's a visual distinction between what it's saying to you versus what are its thoughts, better, like a different colored text. So I can more easily find what I need to specifically read and respond to.

mnott · 4 months ago

+1 — This is a significant pain point for MCP server developers.

I maintain Whazaa, a WhatsApp MCP server. One of its core use cases is mirroring every Claude Code response to WhatsApp. This means whatsapp_send is called after every response, and the full message text is displayed inline in the terminal as part of the tool call header — often 10-20 lines of duplicated content the user just read.

We've already minimized the tool response to a single "Sent.", but the input parameters are still shown in full. There's no MCP-level mechanism to mark a parameter as "not for display" or to truncate long values.

A --quiet flag, a per-tool verbosity setting in settings.json, or even just truncating parameters beyond ~100 chars with an ellipsis would make a huge difference for any MCP tool that handles long text (messaging, document creation, note-taking, etc.).

SpyrosBou · 4 months ago

Adding my support for this feature

alexkli · 4 months ago

+1

There already is ctrl+o to toggle between normal and verbose view for tools, but I would love another toggle to hide it entirely.

For me it's useful to see tool calls while Claude is working but when reviewing output when it's done and looking back at previous prompts & answers the tool bullet points are just in the way IMO.

graffio · 4 months ago

Coming from #31578 (flagged as duplicate). I'd argue the solution here should be interactive collapse/expand rather than
a binary quiet flag.

A --quiet flag forces a tradeoff: either you see everything or you see nothing. But the real problem is that tool output
is noise until something goes wrong — then you want it immediately, without re-running.

Proposal: collapsible disclosure sections

Tool results render collapsed by default, showing a one-line summary. Press a key or click to expand inline:

▶ Read src/store/selectors.js (147 lines)
▶ Edit src/store/selectors.js (+3 -1)

The selector was missing memoization. Fixed by wrapping
the derivation in createSelector.

▶ Ran: yarn tap test/selectors.tap.js (passed)

Expanding a line reveals the full content (file contents, diff, command output) in place.

Why this beats quiet mode:

  • No information is lost — just deferred until you want it
  • No config/flags to manage — it's the default behavior
  • When a test fails or an edit looks wrong, the detail is one keypress away instead of requiring git diff or re-running
  • Works for all tool types uniformly (reads, edits, bash, search)

This is a TUI feature, not a model behavior change — the content is already structured enough (tool calls have types and
summaries) to render collapsed sections without any model-side changes.

epechuzal · 4 months ago

+1 for the mid-session toggle keybind (as fprieur suggested). My main use case is multi-step workflows with background agents — tool output is useful while watching it live, but when reviewing the conversation afterward, the signal-to-noise ratio drops and I have to scroll past a lot of tool calls to find the actual responses. A keybind toggle (like ctrl+o for thinking) that switches between full and text-only view would be ideal.

jordy-dam-inqdo · 4 months ago

Would love this feature!

zensucht · 4 months ago

+1 I've got multiple skills and mcp server tool calls, all interacting and generating a huge amount of noise. Being able to hide them behind ctrl-o would be fantastic.

adereis · 3 months ago

+1 on this. My use case: MCP server tool results generating pages of unreadable output.

I use the Atlassian MCP server for Jira integration. A single jira_get_issue call returns thousands of tokens of raw JSON (issue metadata, descriptions, comments, changelogs) — often 10-12k tokens rendered as a wall of unformatted text in the terminal. When a workflow involves multiple Jira lookups, the terminal becomes completely unusable.

The core problem: MCP tool results are rendered in the UI identically to how they're stored in context. There's no display layer to collapse or summarize verbose responses while preserving the full data for the model.

My current workaround is a PreToolUse hook that blocks MCP calls from the main agent (using agent_id to detect context) and forces delegation to subagents, where the verbose output stays hidden. It works, but it's a hack — subagent overhead for every Jira call just to avoid UI noise.

A per-tool display mode (e.g. "toolDisplayMode": {"mcp__atlassian__*": "collapsed"}) would solve this cleanly. Even a global --quiet flag that collapses tool results to one-line summaries (tool name + result size) while keeping full data in context would be a big improvement.

ShlackBaum · 3 months ago

+1. When Claude Code edits files, the full red/green diff output can fill multiple screens — especially on large file rewrites. This makes the terminal conversation very hard to follow.

Would love a persistent setting in settings.json (not just a per-session toggle) to either:

  • Hide diffs completely — just show "Edited file.md"
  • Show summary only — something like "Edited file.md (+15/-8 lines)"

The current Ctrl+O verbose toggle resets every session and is easy to forget.

shoeys-for-newey · 3 months ago

+1 I'm developing a Claude Code-powered legal research tool that will be used primarily by attorneys and people who generally do not know about code. While it's handy for me to have the tool calls while debugging, I can see it being an obstacle to use for those who don't know what a bash command is and who really don't care for their purposes. A quiet flag would streamline the agent's output and make the tool more approachable for the average user.

sha2fiddy · 3 months ago

Not having this is actually brutal. The so called "compacted" output of MCP logs is like 12 lines of text. When you have 10 MCP queries in a row, it's suddenly impossible to find the actual output from the agent

tmad4000 · 3 months ago

+1 — The diff output volume in particular is overwhelming. When Claude edits a large file, the full red/green diff floods the terminal and pushes the actual response out of view. A collapsed/summary mode (e.g. 'Edited file.md (+15/-8 lines)') would be a huge UX win for power users running many sessions.

cmenguy · 3 months ago

I second the many comments on this issue - right now this yields very verbose sessions when there are lots of tools, and is actually not user friendly. By the time it completes sometimes I forget what the original question was and it's beyond my terminal's memory limits.

This should be configurable or repurpose the verbose flag to allow setting a verbosity level.

dreinecke · 2 months ago

+1 | Would make my life a million times easier if I could hide code diffs while speaking to Claude Code.

gekart · 1 month ago

+1 Absolutely necessary since usage counting made claude -p a cashcow.

anujkumar-df · 1 month ago

+1 please, this is a must to have feature.

m13v · 1 month ago

the part that makes this hard isn't adding the flag, it's that interactive mode renders blocks as they stream and there's no post-hoc filter hook, like you noted. so suppression has to live in the render loop itself. a single --quiet is global on/off, but what advisory-agent setups actually want is per-block-type visibility: tool_use hidden, text and errors shown. that split already exists in the message schema, it just gets flattened into one terminal pane on the way out. once a separate view owns the render, hiding tool calls is a toggle, not a flag, and failures can stay visible independently.

gitchemrol · 22 days ago

Strong +1 on this. Adding a concrete second use case in case it helps prioritization.

The same noise problem exists in the VS Code extension, not just the TUI. The difference is that VS Code users don't have the /focus command as a workaround (it's terminal-only), so there's currently no way to suppress tool-call rendering there at all.

I tried solving it with a custom output style, but ran into a related limitation: custom output styles aren't honored in the VS Code extension either. See #39331, where the custom style is verified to never reach the system prompt in the extension, while it works fine in the CLI. And output styles only steer what the model writes anyway, so they can't hide the tool-call UI blocks. That's exactly what a --quiet / minimal-output setting would address.

So a setting like this would ideally cover both surfaces: a TUI flag plus an equivalent extension/settings toggle. The underlying need is the same in both cases, which is to see the result and not the plumbing.

leofang · 21 days ago

+1 I am building an interactive bot as a service (backed by claude -p but users do not interact with the CLI directly) and I really want to minimize the chat traffic.

tmad4000 · 21 days ago

I'm curious if anyone on the Anthropic team has taken a look at this. It
seems like an easy feature to add and would really improve my user
experience.

On Wed, Jun 24, 2026 at 10:10 PM Leo Fang @.***> wrote:

leofang left a comment (anthropics/claude-code#9340) <https://github.com/anthropics/claude-code/issues/9340#issuecomment-4796078734> +1 I am building an interactive bot as a service (backed by claude -p but users do not interact with the CLI directly) and I really want to minimize the chat traffic. — Reply to this email directly, view it on GitHub <https://github.com/anthropics/claude-code/issues/9340?email_source=notifications&email_token=AAK5D55OREPEYDD4SSLRSJD5BSX4BA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZZGYYDOOBXGM2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4796078734>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAK5D55EW2YMKRD5CZJ56RT5BSX4BAVCNFSNUABFKJSXA33TNF2G64TZHM4TGNZSGUZTINZVHNEXG43VMU5TGNJQGQ4TKNJVHA4KC5QC> . Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS <https://github.com/notifications/mobile/ios/AAK5D53BNY3XZBLOX5RQKFL5BSX4BA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZZGYYDOOBXGM2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJKTGN5XXIZLSL5UW64Y> and Android <https://github.com/notifications/mobile/android/AAK5D5YM6CP6ODPJR3C6G7L5BSX4BA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINZZGYYDOOBXGM2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>. Download it today! You are receiving this because you commented.Message ID: @.***>

--
Jacob
qoɔɐɾ