Atlas Inference

Data handling

What Atlas retains, for how long, and what it never does with your content.

This page is written to be checkable rather than reassuring. Each claim names the control that makes it true.

The short version

Prompts

Traced. Every request is recorded in Langfuse for debugging.

Completions

Traced. Including any reasoning prelude and tool calls.

Training

Never. Customer content is not used to train models.

What is retained

DataRetained?For how long
Prompt content — messages, tools, parametersYes, in LangfuseLangfuse project retention setting
Completion content, including a reasoning prelude and tool callsYes, in LangfuseLangfuse project retention setting
Prompt or completion content in an Atlas databaseNo—
Request id, organization, model, token counts, timings, outcomeYesIndefinitely
Account records — organizations, users, memberships, rolesYesLife of the account
API key hashes, prefixes, labels, last-used timestampsYesUntil revoked and pruned
Audit log — operator actions, membership and role changesYesIndefinitely, append-only
Logs, metrics, tracesYesPer operator retention settings — allowlisted fields only, never content

Request tracing

Every request Atlas serves is exported to Langfuse Cloud as one trace: the request messages, tools and sampling parameters, the assembled response, token usage, timings and outcome. Atlas uses these traces to debug failures and quality issues — so a failing request can be investigated from its request_id without you having to reproduce it.

  • What is not exported: request headers, including your API key. The exporter never sees them.
  • Who can read traces: Atlas operators with access to the Langfuse project.
  • How long they last: the retention setting on Atlas's Langfuse project.
  • Where content lives: in Langfuse only. No Atlas database table has a column that could hold prompt or completion content.

There is no per-organization opt-out yet, and no console toggle or API field for one. Ask your Atlas contact before sending content that must not be recorded by a third-party processor.

How content is kept out of logs

Tracing is the one path content takes out of the gateway. Everything else — logs, metrics, error reports and spans — never carries it. The control is a field allowlist at every boundary that can see a request body — not a denylist, because a denylist fails open on every field nobody thought of, and the fields nobody thinks of are the ones added next.

BoundaryControl
LoggerOnly allowlisted field names, and only values matching each field's declared kind. An unlisted field is dropped, and the drop is counted.
Log messagesNot free text — a constrained event name. An interpolated message becomes event.unnamed.
Error reporterThe report is constructed from allowlisted fields. error.message is never read; the stack's header line is stripped.
MetricsLabel names come from a low-cardinality subset; request_id is deliberately not a permitted label.
TracesSpan names and attributes go through the same two checks.

Values are checked as well as names, because an allowlist over names alone still passes a prompt written into a permitted field.

Tenant isolation

Request and response content, and any server-side state derived from it — including prefix and KV caches — is scoped to a single organization. It is never shared with, or observable by, another.

This is enforced at the database level with row-level security scoped per transaction, not by application filtering, and there is an automated isolation suite that asserts it.

Infrastructure providers

Atlas requires every infrastructure provider in its serving path to be bound to the same no-retention default and the same no-training guarantee described here. That requirement is not yet met, and this is the honest status of it.

ProviderRoleIn the serving pathSees contentRecorded terms
Inference backend hostModel executionYesEvery prompt and every completionNone recorded — open
RunPodGPU infrastructure and the HTTPS proxy in front of the backendYesEvery prompt and completion in transit, and the host they run onNone recorded — open
LangfuseRequest tracingNo — exported after the responseEvery prompt and every completionNone recorded — open
PostgreSQL hostMetering, accountsYesNo contentNone recorded — open
Redis hostAdmission-control countersNoNo content — counters keyed by organization and modelNone recorded — open
WorkOSIdentity: users, organizations, memberships, sessionsNoNo prompt or completion content; holds user recordsNone recorded — open

The inference vendor sees every prompt and every completion. That is the normal path for every request, not an edge case.

No provider in the serving path has recorded data-processing terms yet — no zero-retention commitment and no no-training commitment is on file. That is an open item, not a passing state.

Nothing on this page should be read as an absolute guarantee about a third party Atlas does not operate. What Atlas can state is what it enforces on its own systems, and what it has bound its providers to in writing.

Ask your Atlas contact before sending production content you could not send to an unbound processor.

Credentials are never traced

Traces are built from the parsed request body and the response. Request headers — authorization among them — are never handed to the exporter, so an API key cannot reach Langfuse.

Audit

Operator actions, membership changes and role changes are recorded in an append-only audit log with the acting identity and a timestamp.

What this means for you

  • Send the request_id when you report a problem. It is the trace id in Langfuse, so Atlas can open the exact request and response.
  • Keep your own logs if your application needs a record of what it sent. Atlas is not that record.
  • request_id is the handle for everything else. Token counts, timings, outcome, model version, and cost are all retained and queryable against it.

On this page