> ## Documentation Index
> Fetch the complete documentation index at: https://gleanfeed.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Diagnostics and privacy

> Send a fixed set of app and OS version details only when you explicitly request it.

Diagnostics send basic version context for an identified customer and workspace. They are standalone diagnostic events, not attachments to a feedback request or support report. They are explicit and opt-in: the SDK sends no diagnostics until your app calls `sendDiagnostics()`, and the call does nothing without stored signed identity.

```swift theme={null}
// e.g. from a "Report a problem" action, after identify
try? await GleanFeed.sendDiagnostics()
```

## What the SDK sends

The SDK builds a fixed set of four fields. `appVersion` is omitted when the app bundle does not provide it.

| Field        | Example  |
| ------------ | -------- |
| `platform`   | `ios`    |
| `appVersion` | `1.4.0`  |
| `osVersion`  | `18.0.0` |
| `sdkVersion` | `0.1.2`  |

<Warning>
  The SDK does not send logs, screenshots, device identifiers, tokens, emails, names, feedback text,
  URLs, or arbitrary dictionaries. There is no public API to add custom fields. The server keeps
  only valid values for the four known fields and a count of received metadata keys.
</Warning>

## Keep diagnostics off

Diagnostics are off unless you call `sendDiagnostics()`. To never send them, simply don't call it — there's nothing to disable and no background collection.

## Confirm delivery

After identifying a test customer, call `try await GleanFeed.sendDiagnostics()` from an explicit support action. A successful call returns without a value. If it throws, handle the typed SDK error and leave the support flow usable; diagnostics are supplemental and should not block feedback.
