You are forty minutes into a gnarly refactor. Claude Code has the plan loaded, the failing tests pinned, and you are mid-thought on the next instruction. Then it appears: "How is Claude doing this session?" Your focus breaks, your next keystrokes are now aimed at a rating prompt instead of your agent, and the session you carefully steered drifts sideways. The prompt is the Claude Code session quality survey, and two lines of configuration make sure you never see it again.
What the Session Quality Survey Actually Is
The prompt is a product satisfaction metric, not a bug report. According to the data usage section of the official Claude Code documentation, answering it - including choosing "Dismiss" - records only your rating. No transcript, input, or output is collected by the rating itself.
The rating can be followed by a second, separate prompt: "Can Anthropic look at your session transcript to help us improve Claude Code?" That one matters more:
- Yes uploads your conversation transcript, any subagent transcripts, and the raw session log. Known API key and token patterns are redacted, but source code and file contents go as-is. Shared transcripts are retained for up to six months. On Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in Claude apps gateway sessions, Yes writes the same bundle to
~/.claude/feedback-bundles/instead, and nothing leaves your machine until you forward that file. - No declines without sending anything.
- Don't ask again declines and suppresses the follow-up in future sessions.
Nothing is uploaded unless you pick Yes. So this is not a privacy emergency. It is a focus problem, and for engineers running long agentic sessions, focus is the whole game.
An agent session is a flow state you share with a machine. Any prompt that asks for your attention without advancing the work is a tax on that flow.
Option 1: Set feedbackSurveyRate to 0
Claude Code exposes a settings key, feedbackSurveyRate, that controls how often the survey appears. It takes a probability between 0 and 1. Set it to 0 and the survey never rolls a hit.
Add it to your user settings file, ~/.claude/settings.json, so it applies to every project on your machine:
1{2 "feedbackSurveyRate": 03}
If you only want it gone in one repository, put the same key in that repository's .claude/settings.json (shared with your team) or .claude/settings.local.json (just for you). The key is valid in any settings file.
Option 2: The Hard Off Switch
feedbackSurveyRate tunes frequency. If you want an explicit off switch, Claude Code also honors an environment variable:
1export CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1
A shell export only covers sessions launched from that shell. The desktop app and IDE extensions do not read your .zshrc. Every environment variable Claude Code supports can also live in the env block of settings.json, which covers every surface that reads your settings. In ~/.claude/settings.json:
1{2 "feedbackSurveyRate": 0,3 "env": {4 "CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY": "1"5 }6}
This is the configuration we recommend: belt and suspenders, both in the one file every Claude Code client reads.
Apply It Without Clobbering Your Settings
Your ~/.claude/settings.json probably already holds permissions, hooks, and plugins. Do not paste over it. Merge the two keys in with jq, which preserves everything else, including any existing env entries:
1f="$HOME/.claude/settings.json"2[ -f "$f" ] || echo '{}' > "$f"3jq '.feedbackSurveyRate = 0 | .env.CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY = "1"' "$f" > "$f.tmp" && mv "$f.tmp" "$f"
Verify the result:
1jq '{feedbackSurveyRate, survey_disabled: .env.CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY}' "$HOME/.claude/settings.json"
You should see "feedbackSurveyRate": 0 and "survey_disabled": "1". Start a new session so Claude Code picks up the change.
Why the Survey Can Come Back
You set it at user level, and a week later the prompt shows up again inside one particular repository. That is settings precedence at work. Claude Code resolves each key from the highest-priority file that sets it:
- Managed settings (your organization)
- Command line (
claude --settings) - Project local (
.claude/settings.local.json) - Shared project (
.claude/settings.json) - User (
~/.claude/settings.json)
A repository that commits a nonzero feedbackSurveyRate in its shared .claude/settings.json outranks your user-level 0. Setting the environment variable alongside the rate key closes that gap for everyday use, and a quick grep -r feedbackSurveyRate .claude/ in the offending repo will confirm the culprit.
Organizations can also deliberately opt surveys back in. Teams that block nonessential traffic but collect ratings through their own OpenTelemetry collector can set CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL=1 in managed settings. If that is your situation, the survey is a policy decision, and the conversation belongs with your platform team rather than your dotfiles.
Skip the Bigger Hammers Unless You Mean It
Three broader variables also suppress the survey: DISABLE_TELEMETRY, DO_NOT_TRACK, and CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC. They work, but they take more with them than you might want:
DISABLE_TELEMETRYandCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICalso disable the feature-flag evaluation that Remote Control depends on.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICshuts off all nonessential traffic at once, not just the survey.- These variables only check whether they are set.
DISABLE_TELEMETRY=0still disables telemetry. To turn the behavior back off, unset the variable or set it to an empty string.
If your goal is "stop interrupting me," target the survey directly. Reach for the broad switches only when you actually want the broader outcome.
Roll It Out to Your Whole Team
If the survey annoys you, it is annoying everyone on your team who runs agents all day. A few ways to fix it once:
- Per repository: commit
"feedbackSurveyRate": 0and theenventry to.claude/settings.json. Everyone who clones the repo inherits it. - Per organization: push the same keys through managed settings so no project file can override them.
- Per developer: add the
jqmerge above to your onboarding or dotfiles bootstrap script.
Treat agent configuration the way you treat any other developer platform setting: versioned, reviewed, and consistent. We make the same argument for AGENTS.md instruction files, and it applies just as well to the knobs that decide when your agent is allowed to interrupt you. If you have hit other Claude Code configuration snags, see why Claude Code can't find your tools and Claude Code skills not found after npx install.
Engineers should expect more from their infrastructure, and that includes the tools that sit in the terminal next to them.

Tuning your AI tooling for long, uninterrupted sessions? Share your setup with the Layer5 community on Slack, where platform engineers compare notes on agent configuration every day.
Team

