Are LLM prompts and completions captured by OpenTelemetry's GenAI conventions by default?

No. Capturing what the model actually saw and said is opt-in: gen_ai.input.messages and gen_ai.output.messages both carry an explicit “Opt-In” requirement level in the spec, so a compliant instrumentation library ships with them off, and turning either one on is a decision you make rather than a default you inherit. The rest of a span, the operation name, the provider, the model, the token counts, is captured regardless.

The spec is direct about why: both attributes are flagged as likely to carry sensitive information, including user PII. How they get recorded once you enable them depends on where they land. On a span they’re written as attributes and can fall back to a JSON string if the backend doesn’t support structured values; on an event, structured form is required. Instrumentations are also allowed to filter or truncate the content before emitting it, so opt-in doesn’t mean all-or-nothing once it’s on. Deciding what content leaves an agent’s traces is instrumentation’s job generally; message content is where that decision gets its own explicit switch in the GenAI spec.

sources

keep reading

More on this.

Two ways to run Tessary.

Tessary is an open-source agent reliability platform. Cloud and self-hosted run the same workflow on the OpenTelemetry traces your agent already emits.

Tessary Cloud

We host it for you. Send your first trace with nothing to deploy and no model key.

what's includedper organization
traces
10,000 per calendar month
stored trace data
1 GB
retention
30 days
model credit
$10, one-time, for triage and root-cause analysis
credit card
not required

Self-hosted Tessary

Run the open-source code on your own infrastructure with one command. Add your own model key for triage and root-cause analysis.

Self-host Tessary for me by following https://github.com/tessaryai/tessary/blob/main/setup.md

docker compose -f oci://docker.io/tessaryai/tessary:compose up -d -y