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

fix(v10/core): Stop reporting caller-handled errors from the OpenAI, Anthropic & Google GenAI instrumentations#23638
nicohrubec merged 1 commit into
v10from
backport/v10/ai-client-error-capture

Conversation

@nicohrubec

@nicohrubecnicohrubec 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 📦

PathSize% ChangeChange
@sentry/browser27.75 kBaddedadded
@sentry/browser - with treeshaking flags26.19 kBaddedadded
@sentry/browser (incl. Tracing)46.6 kBaddedadded
@sentry/browser (incl. Tracing + Span Streaming)48.39 kBaddedadded
@sentry/browser (incl. Tracing, Profiling)51.36 kBaddedadded
@sentry/browser (incl. Tracing, Replay)85.84 kBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.48 kBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)90.58 kBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)103.21 kBaddedadded
@sentry/browser (incl. Feedback)44.92 kBaddedadded
@sentry/browser (incl. sendFeedback)32.54 kBaddedadded
@sentry/browser (incl. FeedbackAsync)37.68 kBaddedadded
@sentry/browser (incl. Metrics)28.83 kBaddedadded
@sentry/browser (incl. Logs)29.06 kBaddedadded
@sentry/browser (incl. Metrics & Logs)29.75 kBaddedadded
@sentry/react29.56 kBaddedadded
@sentry/react (incl. Tracing)48.86 kBaddedadded
@sentry/vue33.18 kBaddedadded
@sentry/vue (incl. Tracing)48.57 kBaddedadded
@sentry/svelte27.77 kBaddedadded
CDN Bundle30.14 kBaddedadded
CDN Bundle (incl. Tracing)48.57 kBaddedadded
CDN Bundle (incl. Logs, Metrics)31.72 kBaddedadded
CDN Bundle (incl. Tracing, Logs, Metrics)49.87 kBaddedadded
CDN Bundle (incl. Replay, Logs, Metrics)70.99 kBaddedadded
CDN Bundle (incl. Tracing, Replay)86.07 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.37 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)91.87 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)93.14 kBaddedadded
CDN Bundle - uncompressed89.87 kBaddedadded
CDN Bundle (incl. Tracing) - uncompressed146.79 kBaddedadded
CDN Bundle (incl. Logs, Metrics) - uncompressed94.58 kBaddedadded
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.77 kBaddedadded
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed219.34 kBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed266.03 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.99 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279.73 kBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed283.69 kBaddedadded
@sentry/nextjs (client)51.41 kBaddedadded
@sentry/sveltekit (client)47.02 kBaddedadded
@sentry/core/server80.57 kBaddedadded
@sentry/core/browser66.78 kBaddedadded
@sentry/node-core63.27 kBaddedadded
@sentry/node125.81 kBaddedadded
@sentry/node (incl. diagnostics channel injection)151.25 kBaddedadded
@sentry/node/import (ESM hook with diagnostics-channel injection)70.03 kBaddedadded
@sentry/node/light51.43 kBaddedadded
@sentry/node - without tracing74.95 kBaddedadded
@sentry/aws-serverless84.22 kBaddedadded
@sentry/cloudflare (withSentry) - minified202.05 kBaddedadded
@sentry/cloudflare (withSentry)496.75 kBaddedadded

@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 ownerAugust 26, 2026 11:19
@nicohrubec
nicohrubec requested review from andreiborza and isaacs and removed request for a teamAugust 26, 2026 11:19
@nicohrubec
nicohrubec merged commit dac7beb into v10Aug 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 freeto 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

@nicohrubec@andreiborza@lux-in-tenebris-lucet