[MODEL] Opus adds unnecessary 2>/dev/null to Bash commands, silently swallowing errors

Resolved 💬 5 comments Opened Feb 25, 2026 by carrotRakko Closed Mar 29, 2026

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports
  • [x] This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Other unexpected behavior

What You Asked Claude to Do

Asked Claude Code to comprehensively search a GitHub repository for related issues, PRs, and discussions, following a documented search procedure that requires multiple search framings (technical terms, casual user perspective, implementation-aware perspective, etc.).

What Claude Actually Did

Claude autonomously chose to use both gh search issues and gh api search/issues across many different search framings. For the gh api calls, Claude appended 2>/dev/null to suppress stderr. When the API returned HTTP 422 errors (the query lacked a required is:issue qualifier), the error messages were silently discarded. Claude then reported the combined results as a comprehensive search — but the gh api portion had never executed successfully. The user had no way to know that part of the search silently failed, because the gh search issues portion did return valid results.

Expected Behavior

Claude should have either (a) not suppressed stderr, so the HTTP 422 error would be visible, or (b) if suppression was intentional, checked the exit code and reported that the command failed rather than interpreting empty output as "no results."

Files Affected

_No response_

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Sometimes (intermittent)

Steps to Reproduce

  1. Ask Claude Code to perform a research task that involves running shell commands
  2. Observe the generated Bash commands — 2>/dev/null is frequently appended as a "defensive" measure
  3. If any command fails, the error is silently discarded and empty output is treated as a valid (empty) result

Claude Model

Opus

Relevant Conversation

The user asked: "Search this upstream repo comprehensively for known issues, PRs, and discussions — check multiple search framings per the documented procedure."

Claude ran (among many others):

gh api "search/issues?q=repo:owner/repo+codex+oauth&per_page=10" --jq '...' 2>/dev/null

The API returned HTTP 422 (Query must include 'is:issue' or 'is:pull-request'), but stderr was suppressed. Claude reported "no results found" — as if the search had succeeded but returned nothing.

The error was only discovered later when the user noticed the exit code 1 in the tool output and asked about the cause. Rerunning without 2>/dev/null immediately revealed the error message.

Impact

Medium - Extra work to undo changes

Claude Code Version

2.1.56

Platform

Anthropic API

Additional Context

This is a systematic tendency, not a one-off. The model adds 2>/dev/null to Bash commands as a "defensive" measure to keep output clean, but the effect is information loss. The pattern is especially dangerous in research/investigation tasks where "no results found" and "search failed" have very different implications for the user.

When asked why, the model identified two likely contributing factors:

  1. Training data influence — Bash snippets on Stack Overflow and similar sources frequently use 2>/dev/null
  2. RLHF incentives favoring clean output over accurate error reporting

✍️ Author: Claude Code with @carrotRakko (AI-written, human-approved)

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗