# Control request log data

> Control what prompt and response data leaves the cluster in Agent Router request logs, keeping sensitive content inside your infrastructure.

Enterprise Tier

  Prompt and response bodies routed through the gateway routinely contain the most sensitive data an organisation handles: customer records, source code, internal documents, regulated personal data. For many operators, the question is not whether that content is useful in the dashboard, it plainly is, but whether it is permitted to leave the data-plane cluster at all. Data-residency rules, privacy commitments, and compliance regimes frequently require prompt and completion content to stay inside the customer's own infrastructure, while usage and cost still need to be visible centrally for billing and capacity planning.

The **Request logs** setting governs exactly that boundary. It controls what reaches the Tetrate management plane in `request_log` records, so the amount of request detail that leaves the cluster becomes a deliberate operator decision rather than a fixed default. The richest setting forwards full prompt and response content for inspection in the dashboard; the most restrictive setting keeps that content out of the management plane entirely. The setting accepts three values:

| Mode | What reaches the management plane | What's dropped |
| ----- | ----- | ----- |
| **Full** *(default)* | Envelope, counters, costs, headers, `llm_parameters`, request body, response body. | Nothing. |
| **Metadata only** | Envelope, counters, costs, headers, `llm_parameters`. | `request_body`, `response_body`. |
| **Off** | Nothing. | The entire `request_log` record. |

Selecting Request logs mode:

![Request Logs Mode selection][Image1]

Each mode is a strict superset of the one below it. **Full** forwards the complete record, including request and response bodies, which gives the dashboard's per-request views their full detail. **Metadata only** forwards the envelope, counters, costs, headers, and `llm_parameters` but omits the two body fields, so usage and cost stay visible while prompt and completion content remains inside the cluster. **Off** forwards nothing, suppressing the `request_log` record at the management plane altogether.

The setting is system-wide for the deployment. Switching takes effect across the data plane within a few seconds of saving: no restart, no reinstall.

**Persona:** Platform operator working in the Admin Dashboard, often in coordination with security or compliance stakeholders.

**Estimated time:** 5 to 10 minutes to choose, set, and verify a mode; longer if an external collector is also being wired up.

## When this guide applies

The setting is relevant whenever a decision has to be made about how much request content may cross the cluster boundary toward Tetrate. Typical cases:

| Situation | Suggested mode |
| :---- | :---- |
| Default evaluation or development, where full per-request detail in the dashboard is wanted | Full |
| Prompt and completion content must stay inside the cluster, but usage and cost visibility is still required centrally | Metadata only |
| No `request_log` record may leave the cluster at all, for the strictest data-residency posture | Off |
| Full content is required for observability, but in a self-managed stack rather than the dashboard | Metadata only or Off, paired with an external OTEL destination |

## Outcomes

By the end of this guide:

- The three modes are understood, including exactly what each one forwards and what it drops.
- A mode has been set from the dashboard and confirmed active with a smoke test.
- The audit trail for the change has been located.
- Where required, the full record has been confirmed arriving at a self-managed OTEL collector while content is withheld from the management plane.

## What each mode affects

The mode affects only the records stored at the management plane. Its effect on each dashboard surface and downstream path is shown below:

| Surface | Full | Metadata only | Off |
| ----- | ----- | ----- | ----- |
| Dashboard **Request logs** view (per-request rows) | rows with bodies | rows, body panels empty | no rows |
| Dashboard **Usage** view (tokens, costs over time) | populated | populated | populated |
| Dashboard **Audit logs** view | populated | populated | populated |
| Billing / transactions table | populated | populated | populated |
| Customer-attached OTEL destination on the data plane | full record | **full record** (mode applies only to MP) | **full record** |

Two things are never affected by this setting:

1. **Billing.** Transactions are written through a separate path. Every request still produces a transaction regardless of mode, so monthly billing remains accurate.
1. **Customer-attached destinations.** A self-managed OTEL receiver (see the External destination section below) receives the full record under every mode; the toggle scopes only what crosses the cluster boundary toward Tetrate.

## How to change the mode

The mode is changed entirely from the dashboard. No command-line access, redeployment, or pod restart is required.

1. Sign in to the dashboard with an admin account.
1. Go to **Settings → Request logs**.
1. Pick a mode from the dropdown. The card shows a short description of what each mode stores.
1. Click **Save**.

The save action:

- Persists the new mode to system settings.
- Pushes the change to the data plane via the existing self-heal channel.
- Writes an audit log entry recording who changed the mode and to what value.

Propagation takes a few seconds. Confirm it by sending a prompt through the gateway and checking the Request logs view (see the next section).

## How to verify the mode is active

Because the change takes effect within seconds, the active mode is confirmed by sending a known prompt through the gateway and observing how it appears in the dashboard. This smoke test uses the dashboard alone; no `kubectl` is required.

### Setup once

In the dashboard, go to **API Keys → Create key**. Copy the `sk-...` value. Note the data plane's gateway URL (under **Settings → Workspace**).

### Smoke test per mode

1. Set the mode in **Settings → Request logs**.
1. Send a prompt with a distinctive word:

   ```shell
   curl -X POST https://<your-gateway>/v1/chat/completions \
     -H "Authorization: Bearer sk-<your-key>" \
     -H "Content-Type: application/json" \
     -d '{"model":"claude-haiku-4-5","messages":[{"role":"user","content":"Say MANGO once and stop."}],"max_tokens":50}'
   ```

   Alternatively, send a prompt from the playground.
1. Wait ~10 seconds, then check the dashboard.

Expected result by mode:

| Mode | Request logs view | Usage view |
| ----- | ----- | ----- |
| Full | New row for MANGO. Detail panel shows prompt + response bodies. | MANGO's tokens + cost reflected. |
| Metadata only | New row for MANGO. Detail panel shows tokens + headers; body panels say "No request body available" / "No response body available". | MANGO's tokens + cost reflected. |
| Off | **No row** for MANGO. | MANGO's tokens + cost still reflected (comes from the transaction path). |

Repeat for each mode under test, picking a different keyword each time (MANGO / PAPAYA / DURIAN / KIWI, etc.) so the rows are easy to spot.

### Audit log check

After any change, **Audit logs** in the dashboard shows a new row:

- **Resource type**: `system_settings`
- **Resource ID**: `request_logs.mp_mode`
- **Action**: `UPDATE`
- **Body**: `{"mode":"<the saved value>"}`
- **Actor**: the acting user account
- **Source IP**, **User agent**, **Correlation ID** populated

## External destination: sending the full record to your own backend

To keep prompt and completion content inside a self-managed observability stack while still letting Tetrate see usage and costs, configure **Metadata only** or **Off** mode on the management-plane path and route the full record to a backend you operate.

The data plane always emits the full record to any local destination, regardless of mode. The typical operator pattern is:

- **Mode** = `metadata_only` or `off` (depending on what reaches Tetrate)
- **Local destination** = a backend subscribed to the `requestlog` signal, as below

There are two ways to attach the local destination. The **collector-routed path** — subscribing a custom backend to the `requestlog` signal in Helm values — is the supported primary path. The older **direct-attach** method (hand-setting OTLP environment variables on the egress container) still works and is documented below as legacy, with a [migration path](#migrating-from-direct-attach-to-the-collector-routed-path).

### Primary path: subscribe a custom backend to the `requestlog` signal

In the data-plane Helm values (the file that carries `global.observability`), add a `backends.custom[]` entry subscribed to `requestlog`:

```yaml
global:
  observability:
    enabled: true
    signals:
      requestlog:
        enabled: true              # chart default
    backends:
      custom:
        - name: request-log-sink
          endpoint: otel-collector.observability.svc.cluster.local:4317
          signals: [requestlog]    # explicit subscription — an omitted list never includes requestlog
          tls: { insecure: true }  # in-cluster plaintext hop; omit for TLS
          sendingQueue: { queueSize: 64 }
```

Apply with `helm upgrade` (or the normal chart-management flow). The subscription is the only switch — from it, the chart wires the whole path automatically:

- The data plane's local OpenTelemetry collector renders a **dedicated request-log lane**: an OTLP/gRPC receiver on port 3501 (with a raised message-size cap) plus an OTLP/HTTP receiver on 3502, and a pipeline whose destinations are exactly the subscribed backends.
- The gateway's egress container is injected with the emission configuration — `OTEL_LOGS_EXPORTER=otlp`, `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://otel-gateway.<system-namespace>:3501`, `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc` — so the module pushes request logs to the collector over **OTLP/gRPC** (the default transport on this path). These variables are chart-managed: do not set them by hand alongside a subscription (the render fails — see the migration section).

Emission and the collector lane appear and disappear together: remove the subscription and, on the next upgrade, the receiver, the pipeline, and the injected variables are all gone.

The endpoint shape, `protocol: otlphttp` for backends behind HTTP load balancers or with records past a gRPC size cap, per-backend TLS, header auth from the `otel-gateway-backend-credentials` Secret, and queue sizing (the `sendingQueue: { queueSize: 64 }` above is the recommended request-log sizing) are covered field-by-field in [Custom observability backends](/agent-router-enterprise/guides/observability-and-analytics/configure-custom-observability-backends/) — including how to fan the same records out to several destinations by adding more entries.

### Legacy path: direct-attach via container environment variables

:::note Legacy
This is the pre-fan-out mechanism: it supports exactly one destination, speaks OTLP/HTTP, and bypasses the data plane's local collector. Existing setups keep working unchanged, but new destinations should use the collector-routed path above.
:::

Two environment variables on the egress proxy container:

| Variable | Value |
| ----- | ----- |
| `OTEL_LOGS_EXPORTER` | `otlp` |
| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | the full URL of the collector's OTLP/HTTP logs endpoint, **including** the `/v1/logs` path |

For example, a collector listening at `https://collector.observability.svc.cluster.local:4318` requires the endpoint `https://collector.observability.svc.cluster.local:4318/v1/logs`.

The `/v1/logs` suffix is mandatory on this variable. Per the OTLP exporter specification, the signal-specific `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` is used verbatim, and most collectors only respond on that path. Omitting it is the single most common misconfiguration. (Alternatively, set the base variable `OTEL_EXPORTER_OTLP_ENDPOINT` to the collector URL **without** a path; the exporter appends `/v1/logs` itself. On data planes released before July 2026, only the signal-specific variable works — the base form was posted verbatim and returned 404.)

When `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` is **unset, the transport stays OTLP/HTTP** (`http/protobuf`) — this has always been the direct-attach behavior, and upgrades preserve it. An explicit `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc` is honored on current data planes; with gRPC the endpoint carries no `/v1/logs` path and the URL scheme selects TLS (`http://` plaintext, `https://` TLS against system CAs).

In the Helm values for the egress chart, the variables go on the egress container's env block:

```yaml
envoyProxy:
  provider:
    kubernetes:
      envoyDeployment:
        container:
          env:
            - name: OTEL_LOGS_EXPORTER
              value: otlp
            - name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
              value: https://<your-collector>/v1/logs
```

Apply with `helm upgrade`. The egress pod restarts and the new endpoint becomes the local destination.

If the collector requires an auth header, add it via `OTEL_EXPORTER_OTLP_HEADERS` (`"Authorization=Bearer <token>"`); for sensitive headers, bind from a Kubernetes Secret with `valueFrom.secretKeyRef` instead of inlining.

### Migrating from direct-attach to the collector-routed path

The collector-routed path replaces hand-managed env with a declared backend: it fans out to any number of destinations, moves header credentials from env strings into a Kubernetes Secret, and adds collector-side queueing and byte-aware batching in front of your backend. Migration is a single values change:

1. **Add the backend entry** (as in the primary-path example above) pointing at the same collector. For OTLP/gRPC (`protocol: otlp`, the default) the endpoint is bare `host:port` — no scheme, no `/v1/logs`. To keep talking OTLP/HTTP to a collector that only listens on 4318, set `protocol: otlphttp` and use the full `http(s)://` URL **without** the `/v1/logs` suffix (the collector exporter appends signal paths itself).
1. **In the same change, remove the operator-set variables** from `envoyProxy.provider.kubernetes.envoyDeployment.container.env`: `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`, and `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` if present. Move any `OTEL_EXPORTER_OTLP_HEADERS` auth to the backend's `auth.headers` with the `otel-gateway-backend-credentials` Secret (see [Custom observability backends](/agent-router-enterprise/guides/observability-and-analytics/configure-custom-observability-backends/#authheaders)).
1. Apply, and re-run the verification below.

**The render fails on collision — by design.** As soon as any backend subscribes to `requestlog`, those three variables become chart-managed, and the chart refuses to render a values file that also sets any of them on the container env. `helm template` / `helm upgrade` aborts before anything rolls out, with an error naming the colliding key:

```text
egress-helm: OTEL_LOGS_EXPORTER is chart-managed while the requestlog fan-out lane is active
(global.observability.signals.requestlog.enabled plus a subscribed
observability.backends.custom[] entry), but it is also set via
envoyProxy.provider.kubernetes.envoyDeployment.container.env (legacy direct-attach).
Remove the operator-supplied key and configure the destination as a custom backend instead —
see the request-logs migration guide: https://docs.tetrate.ai/guides/ops/cost-and-quota/configuring-request-logs
```

The fix is exactly what the message says: delete the named key (and its siblings) from the container env, keeping the destination only as a `backends.custom[]` entry. There is no silent precedence — the chart never lets the two mechanisms configure the same variables at once. Conversely, while **no** backend subscribes to `requestlog`, operator-set variables pass through untouched, which is why existing direct-attach setups keep working until they opt in. (The same rule protects the guardrail-trigger lane's `AIDISCOVERY_OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`.)

What changes in behavior after migrating:

| | Direct-attach (legacy) | Collector-routed |
| :---- | :---- | :---- |
| Destinations | Exactly one | Any number of subscribed backends |
| Transport from the module | OTLP/HTTP (unset protocol) | OTLP/gRPC to the local collector; per-backend `otlp` or `otlphttp` onward |
| Auth | Header string in container env | Per-backend headers from the `otel-gateway-backend-credentials` Secret |
| Buffering | SDK exporter only | Plus a sized in-memory queue and byte-aware batching per backend in the collector |
| Lifecycle | Hand-managed env | Rendered and removed with the subscription |

### Verifying the external destination

The external destination is verified by setting the management-plane path to drop everything, then confirming the full record still arrives at the local collector.

1. Stand up (or reuse) an OTEL collector reachable from the data-plane cluster on the URL above.
1. Apply the Helm values change. Wait for the egress pod to roll.
1. Set the dashboard mode to **Off** (the strongest case: Tetrate gets nothing).
1. Send a test prompt via `curl` as above.
1. Within ~10 seconds, the collector logs a record with:
   - Body: the full request-log record as a plain JSON document — `request_id`, model, tokens, costs, and the request and response bodies inline. No decompression or decoding is needed; any OTLP-compatible backend can display and index it directly.
   - Attribute `event.type`: `request_log`, plus `gen_ai.*` and `tars.*` dimensions (`tars.request.id` joins these records with guardrail-trigger records shipped to the same stack).
   - Resource attribute `log.type`: `request_log`

   Request logs are the only records on this stream. Internal management-plane records (billing transactions, access-log forwards, metrics) never reach the local destination.

:::note Older data planes
Data planes released before July 2026 sent the local destination the management-plane transport envelope instead: records with body `Request log` or `ALS access log data export` and an opaque gzip-compressed `payload` attribute marked `json+gzip` / `protobuf+gzip`. If your collector shows those, upgrade the data plane; the record content was unreadable by standard OTLP backends.
:::
1. The dashboard's **Request logs** view shows no new row for this prompt (off mode at MP). The dashboard's **Usage** view does show the tokens + cost (transaction path).

If the collector receives nothing, on the **collector-routed path**:

- Confirm the emission variables were injected and the collector lane rendered:

  ```shell
  kubectl get envoyproxy -n <egress-namespace> -o yaml | grep -A1 OTEL_
  kubectl get cm otel-gateway-config -n <system-namespace> -o yaml | grep -A5 requestlog
  ```

  If both are absent, one leg of the gate is off: `global.observability.enabled`, `signals.requestlog.enabled`, or the backend's explicit `signals: [requestlog]` subscription (an omitted `signals` list never includes `requestlog`).
- Check the `otel-gateway` collector pod's logs for export errors toward your backend, and see the delivery-semantics section of [Custom observability backends](/agent-router-enterprise/guides/observability-and-analytics/configure-custom-observability-backends/) for queue-overflow and oversized-record failure modes.
- Confirm the backend is reachable from the data-plane cluster's pod network. If it is outside the cluster (for example, behind a tunnel or external load balancer), test reachability with `curl` from a debug pod first.

On the **legacy direct-attach path**:

- Confirm `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` ends in `/v1/logs`.
- Confirm `OTEL_LOGS_EXPORTER=otlp` is set; without it the local destination is disabled.
- Check the egress pod's container logs for `OTEL SDK error` lines; they include the failing URL and error code.

## Frequently asked questions

### Does switching to `off` break monthly billing?

No. Transactions are written through a separate code path and arrive regardless of mode. The Usage view and billing reports keep working.

### Does switching to `off` lose audit information about who ran which prompt?

The `request_log` row is the per-request record at the management plane. Under `off` it is not stored at MP. If that detail is required, run `metadata_only` (envelope + tokens reach MP, bodies do not) or wire an external destination as above.

### Does switching to `metadata_only` retroactively strip bodies from rows already in the database?

No. The setting affects only records produced from the moment it takes effect onward. Existing rows are unchanged.

### Can different workspaces have different modes?

Not in this version. The setting is system-wide for the deployment. A per-workspace control is on the roadmap if customers need it.

### What happens when an unknown mode value is saved via a direct database write?

The data plane treats anything it does not recognize as `full`, so a misconfigured value can never silently drop data. The dashboard only ever writes one of the three known values.

### Why is the body panel empty in the dashboard?

Either the request genuinely had no body, the response was empty (for example, an error before a generation finished), or the mode when the request was processed was `metadata_only`. The dashboard does not currently distinguish these cases in the UI.

[image1]:<data:image/png;base64,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>

Where to go next

  <Link to="/agent-router-enterprise/guides/observability-and-analytics/configure-custom-observability-backends/" className="tare-nav-card">
    Custom observability backends
    The full field reference for backends.custom[], more signals to subscribe, and the delivery guarantees behind the collector-routed path.
  </Link>
  <Link to="/agent-router-enterprise/guides/operate-and-govern/compliance-and-governance/manage-log-retention-and-purge/" className="tare-nav-card">
    Manage log retention and purge
    Govern how long the records each mode produces are kept and how they are removed.
  </Link>
  <Link to="/agent-router-enterprise/guides/operate-and-govern/compliance-and-governance/configure-data-residency-and-no-retention/" className="tare-nav-card">
    Configure data residency and no-retention
    Keep regulated content in-region and unretained at the provider.
  </Link>
