← Claude Code Hub
✦ Tip #200 Sep 17, 2026

Claude-drafted feedback: Claude Code just wrote a bug report about itself, you only have to send it

Claude Code gets something wrong, you grumble, and that is where it ends. Since v2.1.238 it writes the report itself, with your own words quoted inside and the IDs of the requests that failed.

A Claude Code card holding a bug report already drafted, the keys to read, send or dismiss it, and what it filled in on its own: the request IDs, the version and your own words quoted

TL;DR When the card shows up: 1 to read it, 2 twice to send it. The transcript stays behind unless you set it to yes. And if you would rather not be interrupted, "feedbackDrafts": "quiet" drops it to a counter in the footer without stopping the drafting.

Claude Code gets something wrong, you grumble, and that is where it ends. Nobody at Anthropic ever hears about it, because a report worth filing costs ten minutes: reconstruct what happened, remember the version, dig out the IDs of the requests that failed. None of it is in front of you at the exact moment you are annoyed.

Since v2.1.238 it writes the thing itself. When a tool keeps failing, when it cannot help with what you asked, or when you point out a mistake, Claude drafts the report on its own failure with the SendFeedback tool and queues it. Your part is to read it and decide.

What you see when it happens

A card appears above your prompt, with the draft's title and its opening lines:

✻ Bug report drafted: Ran git pull on the user's checkout during a read-on…
│ - What happened: During a review/assessment task (understand a repo, then
│ review a Slack thread), the model noticed the local checkout was 46
│ commits behind…
1 to review · 2 to send · 0 to dismiss

Three keys. 1 opens it for review, 2 (twice, the second press confirms) sends it as written, and 0 takes it off your screen. The send-as-is path says what it does on its own label: Send without reviewing (full draft + env, no transcript).

By default you get at most three cards in a session. After that, only a counter in the footer.

The draft is a file of yours, and you can open it

Every draft is written to ~/.claude/feedback/drafts/<uuid>.json, mode 600. Here is a real one from this very session, with the title, the body, the paths and the IDs shortened:

{
  "draft_id": "8e0e2137-80b4-4c6f-b803-2d774c521185",
  "created_at": "2026-09-17T09:23:13.864Z",
  "source_session_id": "80fff406-...",
  "cwd": "/Users/juan/code/ai-infra",
  "model": "claude-opus-5[1m]",
  "cli_version": "2.1.270",
  "os": "darwin arm64",
  "request_ids": ["req_011Cf8m6...", "req_011Cf8mA...", "req_011Cf8mR..."],
  "type": "bug",
  "title": "...",
  "details": "...",
  "area": "skills",
  "failure_mode": "instruction_following",
  "task_category": "other",
  "trigger": "model_judgment",
  "effort": "high",
  "thinking_type": "adaptive",
  "message_count": 415,
  "assistant_turn_count": 29,
  "subagent_count": 0,
  "transcript_ref": {
    "session_file": "/Users/juan/.claude/projects/-Users-juan-code-ai-infra/80fff406-....jsonl",
    "message_range": null,
    "project_dir_key": "-Users-juan-code-ai-infra"
  },
  "status": "queued"
}

That is the part nobody assembles by hand: the last three request IDs, the exact version, the model with its context window, the effort level, how many turns deep you were. And inside details there is a section that quotes your own words as you typed them, which is what carries the most weight for whoever tries to reproduce the failure.

Look at transcript_ref: that is a path, not the conversation. The draft records where your transcript lives so it can find it later, and the directory itself is never sent.

What leaves your machine, and what stays

What ships when you send: the title, the area, the details, the environment (version, OS, model) and the request IDs. The full conversation goes only if you set Send transcript to yes while reviewing, and it never goes from the card.

Two details that live in the shipped code rather than in the docs. The payload hardcodes gitRepo: false and commitSha: null, so nothing about your repository travels. And even when you say yes to the transcript, Claude Code withholds it in two cases: when it cannot corroborate that the conversation belongs to this session, and when it spots third-party transcript markers inside.

Nothing leaves until you send. The file is deleted from your disk once the send succeeds, or when you discard it from the queue.

And if you would rather not be interrupted

A card landing in the middle of something is exactly the moment you least want to read anything. The first instinct is to kill it, and Claude Code offers exactly that: the moment you dismiss a card it asks Turn off Claude-drafted feedback?.

You do not have to go that far. There is a middle setting:

{
  "feedbackDrafts": "quiet"
}

With quiet the drafts still get written, but a counter in the prompt footer replaces the card. You read them when you feel like it:

/feedback

With no argument it opens the whole queue, holding drafts from every session. There you can edit the title, the area and the details, make the transcript call, and send or discard. Run /exit with anything still queued and it asks you before closing.

Reference

"feedbackDrafts": "notify" Default. Card above the prompt, three per session at most
"feedbackDrafts": "quiet" Keeps drafting, footer counter only
"feedbackDrafts": "off" Disables the tool, no draft is ever written
CLAUDE_CODE_SEND_FEEDBACK=0 Same as off, through the environment
/feedback Opens the draft queue across all your sessions
Queue 10 drafts; the eleventh evicts the oldest
Expiry 30 days, or your cleanupPeriodDays when that is shorter

In an organization with a custom data retention policy, sending is unavailable, and an administrator can pin feedbackDrafts in managed settings above your own value.

Official docs: SendFeedback tool behavior

Requirements

  • Claude Code v2.1.238 or later. The JSON above is what landed on disk when the tool fired in this session, which was running v2.1.270; the code quoted is what ships in v2.1.274.
  • A session talking to Anthropic directly. In the code the tool switches off when the provider is not first party (bedrock, vertex, foundry, gateway) and when your organization's policy blocks feedback.
  • The final check reads a remote flag that ships turned off, so the rollout is gradual: if a card has never appeared for you on a recent enough version, that is the likeliest reason.
  • If you have only ever seen the command go by without knowing what it was, the slash commands cheat sheet puts it next to the rest.
Free guide

The 51 essentials, as a guide.

One page per tip. Five chapters. What I actually use daily in production. No theory, no fluff.

  • I. Getting started 10 tips
  • II. Awareness 3 tips
  • III. Mastery 22 tips
  • IV. Autonomy 10 tips
  • V. Comparison 6 tips
Are you a professional Web developer?

You'll receive the guide by email · You join the Gravitas newsletter · Unsubscribe anytime

of 51
#

Wmedia · 51 Tips
Free guide · 51 tips · 5 chapters

The 51 essentials, as a guide.

Are you a professional Web developer? · Unsubscribe anytime
Workshop for teams

Multiply your team's output without sacrificing quality: a 6 to 8 hour AI First workshop, online, on the Claude platform.

See the workshop

Want the 51 Claude Code essentials as a guide?