# Secrets (/de/docs/workspaces/secrets)

Ein Secret ist eine Variable, deren Wert im Schlüsselbund auf deinem Mac bleibt. Die Datei des Arbeitsbereichs enthält
nur ihren Namen, sodass du den Arbeitsbereich committen und teilen kannst, ohne deine Anmeldedaten zu teilen. Nutze
Secrets für Passwörter, Tokens, API-Schlüssel und alles andere, das du nicht in einen Chat einfügen würdest.

## Eine Variable zum Secret machen [#make-a-variable-secret]

1. Öffne die Tabelle der Variablen: die Seite [Umgebungen](/docs/workspaces/environments),
   **Ordnereinstellungen … › Variablen** oder den Tab **Variablen** der Anfrage.
2. Füge die Variable hinzu oder suche sie und hake **Secret** an.
3. Tippe den Wert ins Feld (es zeigt **Auf diesem Mac nicht festgelegt**) und drücke <kbd>↩</kbd> oder klicke auf
   **Sichern**.

Das Feld zeigt den Wert nie wieder. Sobald ein Wert vorhanden ist, zeigt es **Im Schlüsselbund gespeichert**, mit einem
Schlüssel. Um den Wert zu ändern, tippe einen neuen und sichere ihn.

Nutze ein Secret wie jede Variable: `{{token}}`.

<Shot id="workspaces-secret-variable" alt="Variablen des Arbeitsbereichs auf der Seite „Umgebungen“: token als Secret markiert, sein Wertfeld zeigt „Im Schlüsselbund gespeichert“" />

In der Datei ist ein Secret ein Name und ein Flag, ohne Wert:

```toml
[[variables]]
name = "token"
secret = true
```

Jede Ebene behält ihren eigenen Wert. Ein Secret `password` in der Umgebung Staging und eines in Production sind zwei
Einträge im Schlüsselbund, sodass jede Umgebung ihr eigenes Passwort haben kann.

## Wo die Werte liegen [#where-the-values-live]

Die Werte liegen in deinem Anmelde-Schlüsselbund, ein Eintrag pro Secret, mit der Bezeichnung `Echolot secret <name>`.
Sie gehören zum Arbeitsbereich (über seine ID, die in `workspace.toml` steht) und zu der Ebene, auf der die Variable
definiert ist. Das Befehlszeilentool auf demselben Mac liest dieselben Einträge.

Ein Secret ohne Wert auf diesem Mac fällt nicht auf eine andere Ebene zurück. Die Anfrage sagt
`the secret {{password}} has no value on this Mac`, bis du einen festlegst.

<Edition only="appstore">
  Die App-Store-Edition nutzt denselben Schlüsselbund. Einträge, die der Direktdownload oder das Befehlszeilentool
  angelegt haben, fragen vielleicht einmal nach Zugriff; wähle **Immer erlauben**.
</Edition>

## Was nie in Dateien kommt [#what-never-goes-into-files]

Echolot hält diese aus den Dateien des Arbeitsbereichs heraus:

- Die Werte von Secret-Variablen.
- Secrets, die [Erfassungen von Antwortwerten](/docs/requests/captures) speichern: Eine als Secret markierte Erfassung
  schreibt nur in den Schlüsselbund. In Alpenglow erfasst **Auth › Sign in** `access_token` in das Secret `{{token}}`.
- OAuth-2.0-Tokens und MCP-Anmeldungen.
- Werte, die du mit **In den Schlüsselbund verschieben** verschiebst (unten).

Was du als Klartext tippst, bleibt Klartext. Enthält ein Passwortfeld von Auth oder Proxy einen festen Wert statt einer
Variablen, warnt Echolot darunter: **Als Klartext in der Arbeitsbereichsdatei gespeichert.** Klicke auf
**In den Schlüsselbund verschieben**: Der Wert wird zu einer Secret-Variablen des Arbeitsbereichs, und das Feld erhält
stattdessen `{{name}}`.

Secrets sind auch überall maskiert, wo Echolot eine aufgelöste Anfrage zeigt oder weitergibt: Vorschauen, die Übersicht,
das Panel „Variablen“, die Verlaufssuche und alles, was Agenten erhalten. [Code erzeugen
…](/docs/workspaces/exporting#copy-a-request-as-code) und **Als cURL kopieren** sind die Ausnahme: Sie schreiben die
Anfrage so, wie sie gesendet würde, mit den Secrets.

## Importe verschieben Anmeldedaten in Secrets [#imports-move-credentials-into-secrets]

Wenn du eine Postman-Sammlung, einen Insomnia-Export oder eine andere Datei [importierst](/docs/get-started/importing),
werden Passwörter, Tokens und API-Schlüssel, die in Auth-Einstellungen und Anmelde-Headern stehen, zu Secret-Variablen.
Ihre Werte gehen in den Schlüsselbund, und die Anfrage erhält stattdessen `{{name}}`: den Namen der Anfrage und das
Feld, etwa `{{me_password}}`. Der Importbericht listet die Namen der Secrets, die er gesichert hat, nie die Werte.

Anmeldedaten, die in Adressen (`https://user:pass@…`), Query-Strings und Bodys stehen, werden noch nicht verschoben.
Prüfe diese nach einem Import.

## Exporte lassen Werte aus [#exports-leave-values-out]

Ein [Export](/docs/workspaces/exporting) schreibt Secret-Variablen in jedem Format nur mit ihrem Namen, ohne Wert. Wer
den Export öffnet, legt die Werte auf seiner Seite fest.

## Secrets in der Befehlszeile und in CI [#secrets-on-the-command-line-and-in-ci]

Das Befehlszeilentool sucht den Wert eines Secrets in dieser Reihenfolge:

1. Eine Datei `--secrets`, die du `echolot run` gibst: Zeilen mit `NAME=value`.
2. Eine Umgebungsvariable `ECHOLOT_SECRET_<NAME>`: der Name in Großbuchstaben, jedes Zeichen außer Buchstaben und
   Ziffern zu `_` gemacht. `{{token}}` liest `ECHOLOT_SECRET_TOKEN`; `{{api-key}}` liest `ECHOLOT_SECRET_API_KEY`.
3. Auf einem Mac die Einträge im Schlüsselbund, die die App führt.

```sh
ECHOLOT_SECRET_TOKEN=… echolot run Alpenglow.echolot --folder orders
echolot run Alpenglow.echolot --env staging --secrets staging.secrets
```

Der Schlüsselbund wird übersprungen, wenn `CI` gesetzt ist und bei `ECHOLOT_KEYCHAIN=0`. Setze in CI die Variablen
`ECHOLOT_SECRET_…` aus dem Secret-Speicher deiner CI. Siehe [CI](/docs/cli/ci).

Ein Secret, das in der Umgebung gefunden wird, zählt für jede Ebene: `ECHOLOT_SECRET_PASSWORD` beantwortet
`{{password}}` in jeder Umgebung.

Importe in der Befehlszeile verschieben Anmeldedaten wie die App in Secrets. Ohne Schlüsselbund sagt das Tool, welche
Variablen `ECHOLOT_SECRET_…` du setzen musst.

## Das erste Öffnen durch ein Teammitglied [#a-teammates-first-open]

Wer im Team den Arbeitsbereich klont, bekommt den Namen jedes Secrets und keinen der Werte. Die Tabellen zeigen
**Auf diesem Mac nicht festgelegt**. Die Person legt ihre eigenen Werte einmal fest, und von da an arbeiten alle mit
denselben Dateien und den eigenen Anmeldedaten. Siehe [Git und Teams](/docs/workspaces/git-and-teams).
