Skip to content

Conversation

@clouatre
Copy link
Contributor

Summary

Shell command output (like device codes from gh auth login) was being displayed as spinner messages, causing critical information to be hidden or lost. This fix extracts the notification type from MCP logging messages and prints shell_output directly as static text, following the same pattern as task_execution notifications.

Type of Change

  • Bug fix

AI Assistance

  • This PR was created or reviewed with AI assistance

Testing

Manual testing:

  • Tested gh auth login - device code now displays correctly as static text
  • Verified shell output streams line-by-line without spinner corruption

Automated testing:

  • ✅ Unit tests: cargo test --package goose-cli (101/101 passed)
  • ✅ Linter: ./scripts/clippy-lint.sh (clean, no new warnings)
  • ✅ Format: cargo fmt --check (passing)

Changes:

  • crates/goose-cli/src/session/mod.rs (+16, -2 lines)
    • Extract type field from MCP notifications (lines 1089-1093)
    • Add shell_output handling to print directly without spinner (lines 1128-1138)

Related Issues

Partial fix for #3196 - addresses shell output streaming during command execution. The original issue requests a hotkey to show full tool output; this fix ensures streaming output displays correctly in real-time.

Screenshots/Demos (for UX changes)

Before: Device code from gh auth login was hidden in spinner animation
After: Device code displays immediately as static text:

─── shell | developer ──────────────────────────
command: gh auth login

! First copy your one-time code: 85A2-6D9A
Open this URL to continue in your web browser: https://github.com/login/device

Copilot AI review requested due to automatic review settings December 10, 2025 15:14
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a bug where shell command output (like device codes from gh auth login) was being displayed as spinner messages, causing critical information to be hidden. The fix extracts the notification type from MCP logging messages and prints shell_output directly as static text, following the same pattern used for task_execution notifications.

Key changes:

  • Added notification type extraction for MCP notifications with output field
  • Implemented dedicated handling for shell_output notification type to display output as static text without spinner interference

@clouatre
Copy link
Contributor Author

Related:

Context: This PR fixes streaming shell output being hidden in spinners during command execution.

@alexhancock
Copy link
Collaborator

Shell command output (like device codes from 'gh auth login') was being
displayed as spinner messages, causing critical information to be hidden.
This fix extracts the notification type and prints shell_output directly
as static text, following the same pattern as task_execution notifications.

The conditional logic was simplified to avoid duplicate println calls
between interactive and non-interactive modes.

Partial fix for block#3196

Signed-off-by: Hugues Clouâtre <[email protected]>
@clouatre clouatre force-pushed the fix/tool-output-user-audience branch from 1afa1c5 to adbaeca Compare December 12, 2025 22:27
@clouatre
Copy link
Contributor Author

@alexhancock DCO fixed and all checks passing now. Thanks for the quick reviews!

@alexhancock alexhancock merged commit 617e7e0 into block:main Dec 16, 2025
17 checks passed
@alexhancock
Copy link
Collaborator

@clouatre Nice - thanks!

zanesq added a commit that referenced this pull request Dec 16, 2025
…s-predefined-models

* 'main' of github.com:block/goose: (81 commits)
  fix: display shell output as static text instead of spinner (#6041)
  fix : Custom providers with empty API keys show as configured in desktop (#6105)
  Add .agents/skills and ~/.config/agent/skills to skills discovery paths (#6139)
  fix: use instructions for system prompt and prompt for user message in subagents (#6121)
  Fix compaction loop for small models or large input (#5803)
  feat: Centralize theme management with ThemeContext (#6137)
  OpenRouter & Xai streaming (#5873)
  fix: resolve mcp-hermit cleanup path expansion issue (#5953)
  feat: add goose PR reviewer workflow (#6124)
  perf: Avoid repeated MCP queries during streaming responses (#6138)
  Fix YAML serialization for recipes with special characters (#5796)
  Add more posthog analytics (privacy aware) (#6122)
  docs: add Sugar MCP server to extensions registry (#6077)
  Fix tokenState loading on new sessions (#6129)
  bump bedrock dep versions (#6090)
  Don't persist ephemeral extensions when resuming sessions (#5974)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /ui/desktop (#5939)
  chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /documentation (#5898)
  Add Scorecard supply-chain security workflow (#5810)
  Don't show subagent tool when we're a subagent (#6125)
  ...

# Conflicts:
#	crates/goose/src/providers/formats/databricks.rs
aharvard added a commit that referenced this pull request Dec 17, 2025
* main:
  fix: we don't need to warn about tool count when in code mode (#6149)
  deps: upgrade agent-client-protocol to 0.9.0 (#6109)
  fix(providers): fix for gemini-cli on windows to work around cmd's multiline prompt limitations #5911 (#5966)
  More slash commands (#5858)
  fix: MCP UI not rendering due to CallToolResult structure change (#6143)
  fix: display shell output as static text instead of spinner (#6041)
  fix : Custom providers with empty API keys show as configured in desktop (#6105)
  Add .agents/skills and ~/.config/agent/skills to skills discovery paths (#6139)
  fix: use instructions for system prompt and prompt for user message in subagents (#6121)
  Fix compaction loop for small models or large input (#5803)
  feat: Centralize theme management with ThemeContext (#6137)
  OpenRouter & Xai streaming (#5873)
  fix: resolve mcp-hermit cleanup path expansion issue (#5953)
  feat: add goose PR reviewer workflow (#6124)
  perf: Avoid repeated MCP queries during streaming responses (#6138)
  Fix YAML serialization for recipes with special characters (#5796)
  Add more posthog analytics (privacy aware) (#6122)
  docs: add Sugar MCP server to extensions registry (#6077)
dianed-square added a commit that referenced this pull request Dec 17, 2025
* origin/main: (57 commits)
  docs: create/edit recipe button (#6145)
  fix(google): Fix 400 Bad Request error with Gemini 3 thought signatures (#6035)
  fix: we don't need to warn about tool count when in code mode (#6149)
  deps: upgrade agent-client-protocol to 0.9.0 (#6109)
  fix(providers): fix for gemini-cli on windows to work around cmd's multiline prompt limitations #5911 (#5966)
  More slash commands (#5858)
  fix: MCP UI not rendering due to CallToolResult structure change (#6143)
  fix: display shell output as static text instead of spinner (#6041)
  fix : Custom providers with empty API keys show as configured in desktop (#6105)
  Add .agents/skills and ~/.config/agent/skills to skills discovery paths (#6139)
  fix: use instructions for system prompt and prompt for user message in subagents (#6121)
  Fix compaction loop for small models or large input (#5803)
  feat: Centralize theme management with ThemeContext (#6137)
  OpenRouter & Xai streaming (#5873)
  fix: resolve mcp-hermit cleanup path expansion issue (#5953)
  feat: add goose PR reviewer workflow (#6124)
  perf: Avoid repeated MCP queries during streaming responses (#6138)
  Fix YAML serialization for recipes with special characters (#5796)
  Add more posthog analytics (privacy aware) (#6122)
  docs: add Sugar MCP server to extensions registry (#6077)
  ...
katzdave added a commit that referenced this pull request Dec 17, 2025
…icing

* 'main' of github.com:block/goose: (35 commits)
  docs: skills (#6062)
  fix: add conditional configuration for GOOSE_BIN_DIR in PATH (#5940)
  Update dependencies to help in Fedora packaging (#5835)
  fix: make goose reviewer less bad (#6154)
  docs: create/edit recipe button (#6145)
  fix(google): Fix 400 Bad Request error with Gemini 3 thought signatures (#6035)
  fix: we don't need to warn about tool count when in code mode (#6149)
  deps: upgrade agent-client-protocol to 0.9.0 (#6109)
  fix(providers): fix for gemini-cli on windows to work around cmd's multiline prompt limitations #5911 (#5966)
  More slash commands (#5858)
  fix: MCP UI not rendering due to CallToolResult structure change (#6143)
  fix: display shell output as static text instead of spinner (#6041)
  fix : Custom providers with empty API keys show as configured in desktop (#6105)
  Add .agents/skills and ~/.config/agent/skills to skills discovery paths (#6139)
  fix: use instructions for system prompt and prompt for user message in subagents (#6121)
  Fix compaction loop for small models or large input (#5803)
  feat: Centralize theme management with ThemeContext (#6137)
  OpenRouter & Xai streaming (#5873)
  fix: resolve mcp-hermit cleanup path expansion issue (#5953)
  feat: add goose PR reviewer workflow (#6124)
  ...
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.

2 participants