Skip to content

fix(v10/core): Stop reporting caller-handled errors from the OpenAI, Anthropic & Google GenAI instrumentations - #23638

Merged
nicohrubec merged 1 commit into
v10from
backport/v10/ai-client-error-capture
Aug 26, 2026
Merged

nicohrubec merged 1 commit into
v10from
backport/v10/ai-client-error-capture

Conversation

@nicohrubec

@nicohrubec nicohrubec commented Aug 26, 2026

Copy link
Copy Markdown
Member

Backport of: #23024

Differences to the original PR

  • On v10 the AI instrumentation lives in packages/core/src/tracing/ (it moved to @sentry/server-utils on v11), so the same change is applied there with v10's internal imports and GEN_AI_*_ATTRIBUTE names.
  • Anthropic test only: v10 also captured the handled error-model rejection on the non-orchestrion path, so its tests asserted that event. The fix stops that capture, so those EXPECTED_MODEL_ERROR expectations are removed. v10's existing truncation test is kept next to the new error-shaped-response test.

…Anthropic & Google GenAI instrumentations

Backport of: #23024
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 27.75 kB added added
@sentry/browser - with treeshaking flags 26.19 kB added added
@sentry/browser (incl. Tracing) 46.6 kB added added
@sentry/browser (incl. Tracing + Span Streaming) 48.39 kB added added
@sentry/browser (incl. Tracing, Profiling) 51.36 kB added added
@sentry/browser (incl. Tracing, Replay) 85.84 kB added added
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 75.48 kB added added
@sentry/browser (incl. Tracing, Replay with Canvas) 90.58 kB added added
@sentry/browser (incl. Tracing, Replay, Feedback) 103.21 kB added added
@sentry/browser (incl. Feedback) 44.92 kB added added
@sentry/browser (incl. sendFeedback) 32.54 kB added added
@sentry/browser (incl. FeedbackAsync) 37.68 kB added added
@sentry/browser (incl. Metrics) 28.83 kB added added
@sentry/browser (incl. Logs) 29.06 kB added added
@sentry/browser (incl. Metrics & Logs) 29.75 kB added added
@sentry/react 29.56 kB added added
@sentry/react (incl. Tracing) 48.86 kB added added
@sentry/vue 33.18 kB added added
@sentry/vue (incl. Tracing) 48.57 kB added added
@sentry/svelte 27.77 kB added added
CDN Bundle 30.14 kB added added
CDN Bundle (incl. Tracing) 48.57 kB added added
CDN Bundle (incl. Logs, Metrics) 31.72 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) 49.87 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) 70.99 kB added added
CDN Bundle (incl. Tracing, Replay) 86.07 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 87.37 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) 91.87 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 93.14 kB added added
CDN Bundle - uncompressed 89.87 kB added added
CDN Bundle (incl. Tracing) - uncompressed 146.79 kB added added
CDN Bundle (incl. Logs, Metrics) - uncompressed 94.58 kB added added
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 150.77 kB added added
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 219.34 kB added added
CDN Bundle (incl. Tracing, Replay) - uncompressed 266.03 kB added added
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 269.99 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 279.73 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 283.69 kB added added
@sentry/nextjs (client) 51.41 kB added added
@sentry/sveltekit (client) 47.02 kB added added
@sentry/core/server 80.57 kB added added
@sentry/core/browser 66.78 kB added added
@sentry/node-core 63.27 kB added added
@sentry/node 125.81 kB added added
@sentry/node (incl. diagnostics channel injection) 151.25 kB added added
@sentry/node/import (ESM hook with diagnostics-channel injection) 70.03 kB added added
@sentry/node/light 51.43 kB added added
@sentry/node - without tracing 74.95 kB added added
@sentry/aws-serverless 84.22 kB added added
@sentry/cloudflare (withSentry) - minified 202.05 kB added added
@sentry/cloudflare (withSentry) 496.75 kB added added

@nicohrubec
nicohrubec marked this pull request as ready for review August 26, 2026 11:19
@nicohrubec
nicohrubec requested a review from a team as a code owner August 26, 2026 11:19
@nicohrubec
nicohrubec requested review from andreiborza and isaacs and removed request for a team August 26, 2026 11:19
@nicohrubec
nicohrubec merged commit dac7beb into v10 Aug 26, 2026
309 of 315 checks passed
@nicohrubec
nicohrubec deleted the backport/v10/ai-client-error-capture branch August 26, 2026 11:50
brandhaug added a commit to brandhaug/b2b-saas-starter that referenced this pull request Sep 5, 2026
## Dependency Updates

| Package | From | To | Type |
| --- | --- | --- | --- |
| `@sentry/react` | 10.71.0 | 10.73.0 | minor |

## Release Notes

<details>
<summary><b>@sentry/react</b> (10.71.0 → 10.73.0) — 2 releases</summary>

<details>
<summary><b>10.73.0</b></summary>

### Important Changes

- **feat(v10/nextjs): Add `@sentry/nextjs/config` entry point
([#23766](getsentry/sentry-javascript#23766

`withSentryConfig` is now available from `@sentry/nextjs/config`, the
path it moves to in v11. Importing it from `@sentry/nextjs` still works
on v10 but logs a warning once, so you can change your `next.config`
file today and upgrade to v11 without touching it again.

  ```js
  // next.config.mjs
  - import { withSentryConfig } from '@sentry/nextjs';
  + import { withSentryConfig } from '@sentry/nextjs/config';
  ```

### Other Changes

- feat(v10/node): Deprecate `shouldHandleError` on
`setupExpressErrorHandler` and `setupFasitfyErrorHandler`
([#23734](getsentry/sentry-javascript#23734))
- fix(v10/cloudflare): Instrument Durable Object handlers installed as
read-only properties
([#23769](getsentry/sentry-javascript#23769))

<details>
  <summary><strong>Internal Changes</strong></summary>

- test(v10/nextjs): Drop nextjs-16-cf-workers canary variant
([#23775](getsentry/sentry-javascript#23775))

</details>

## Bundle size 📦 

| Path | Size |
|
--------------------------------------------------------------------------
| ----------------- |
| @sentry/browser | 27.1 KB |
| @sentry/browser - with treeshaking flags | 25.58 KB |
| @sentry/browser (incl. Tracing) | 45.54 KB |
| @sentry/browser (incl. Tracing + Span Streaming) | 47.28 KB |
| @sentry/browser (incl. Tracing, Profiling) | 50.17 KB |
| @sentry/browser (incl. Tracing, Replay) | 83.87 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags |

…[full
notes](https://github.com/getsentry/sentry-javascript/releases/tag/10.73.0)

</details>

<details>
<summary><b>10.72.0</b></summary>

### Important Changes

- **AI integrations no longer report errors that propagate to the caller
([#23638](getsentry/sentry-javascript#23638),
[#23639](getsentry/sentry-javascript#23639),
[#23640](getsentry/sentry-javascript#23640

Across all AI integrations (OpenAI, Anthropic, Google GenAI, LangChain,
and LangGraph), the SDK no longer sends an event to Sentry for errors
that the AI framework propagates to your code. Previously the
instrumentation reported these as unhandled (`handled: false`) before
your own error handling ran, so an error your code caught still showed
up in Sentry as an unhandled crash. The span is still marked as errored
and the error still propagates, so reporting is left to your
application: if your code does not handle the error, it reaches Sentry's
global error handlers and is captured as unhandled, just like any other
uncaught error. Errors that a provider surfaces as data on an otherwise
successful response (such as Anthropic error-shaped responses or Google
GenAI blocked content) are still captured, since your code never sees
them propagate.

- **feat(v10/cloudflare): Add `rpcTracePropagationBindings`
([#23737](getsentry/sentry-javascript#23737),
[#23738](getsentry/sentry-javascript#23738

The new `rpcTracePropagationBindings` option names the `env` bindings
that outgoing RPC calls propagate trace context to. Strings match a
binding name exactly, regular expressions match by pattern, and the
default empty array propagates to nothing. RPC has no headers to carry
trace context, so the SDK appends it as a trailing argument that only a
Sentry-instrumented receiver removes again. List only the bindings whose
receiver you know runs Sentry. Setting the option takes precedence over
`enableRpcTracePropagation`, which is now deprecated. When you build
with the Sentry Cloudflare Vite plugin, the bindings that resolve to t

…[full
notes](https://github.com/getsentry/sentry-javascript/releases/tag/10.72.0)

</details>

</details>

---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*
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.

3 participants