{"version":"2.1.284","anchor":"sdk-submitfeedback-can-save-a-feedback-report-locally-inste","canonical_anchor":"sdk-submitfeedback-can-save-a-feedback-report-locally-inste","heading":"SDK feedback can be saved as a local bundle, and hosts learn the feedback mode up front","tier":"use","area":"Agents","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.284\/e\/sdk-submitfeedback-can-save-a-feedback-report-locally-inste","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.284","markdown":"### SDK feedback can be saved as a local bundle, and hosts learn the feedback mode up front\n\nSDK hosts can save a feedback report as a local redacted zip with save_locally, and learn at startup whether feedback is sent, bundled or disabled\n\n**Unclear.** The request is marked internal, so it is unclear which apps actually send `save_locally`.\n\n**What**\n\nThe SDK lets other programs, such as the IDE and desktop apps, run Claude Code and offer its `\/feedback` report. Two internal additions change how that works.\n\n- `feedback_mode`: a new field on the SDK's start-up message tells the host how this session handles a `submit_feedback` report: \"post\" sends it to Anthropic, \"bundle\" writes a redacted zip on this machine, \"share\" is the internal-build upload, and \"disabled\" means it is refused. It is left out when the only refusal is organisation policy.\n\n- \"bundle\" is chosen when the API provider is not Anthropic's own (cause \"provider\") or when there are no Anthropic credentials (\"no Anthropic credentials\"). The description now separates \"disabled\" (organisation policy, an environment kill switch) from \"cannot be sent\".\n\n- `save_locally`: a new option on the `submit_feedback` request. The report is written to a redacted zip on this machine and nothing is sent. The response carries `bundle_path`, with `feedback_id` set to the bundle id, or `failure_reason: \"bundle_write_failed\"` if the write fails.\n\n- `save_locally` still applies if the mode has since become \"post\" or \"share\", for example after signing in mid-session, but \"disabled\" still refuses it. It is ignored when a `draft_id` is given.\n\n- A report without a draft, submitted before any turn has happened, now returns `unavailable_reason` \"no turn received yet\".\n\n- Both the control-request path and the bridge path use the new local writer.\n\n**Why**\n\nApps built on the SDK can warn users before they write feedback whether it will be sent, saved locally or refused, and can offer a local-only report that is never uploaded. People using Claude through Bedrock, Vertex or a gateway get a way to produce a report in these apps.\n\n- Area: Agents\n- Names: `save_locally`, `\/feedback`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 3\/5"}