Startseite / Blog / DeepSeek-Harness
ENGINEERING_BLOG · 2026.08.18

DeepSeek-Harness-API-Key-Speicher: UI oder Umgebungsvariable?

Der offizielle Python-Beispielcode liest den Schlüssel über os.environ.get("DEEPSEEK_API_KEY"); genau deshalb sollten Sie nicht pauschal eine einzige Speicherart für alle Einsätze verwenden. (api-docs.deepseek.com)

Wochenplan für Ihre Entscheidung: Am ersten Tag ordnen Sie den Einsatz einer verantwortlichen Identität zu, am zweiten Tag testen Sie die Auflösung des Schlüssels ohne ihn auszugeben, und am dritten Tag prüfen Sie Rotation, Protokolle und Abbruchverhalten. Für persönliche Web-UI-Tests ist der integrierte Schreibzugang vertretbar, für Python SDK, CI und wiederaufbaubare Aufgaben sind Laufzeit-Umgebungsvariablen die bessere Wahl. In gemeinsam genutzten Remote-Macs muss der Schlüssel einem eingeschränkten Aufgaben- oder Projektkonto gehören, nicht pauschal allen Benutzern.

Diese Anleitung ist für drei Gruppen gedacht: Entwickler, die DeepSeek Harness erstmals auf einem persönlichen Mac konfigurieren; Plattformverantwortliche, die gemeinsam genutzte oder entfernte Macs betreiben; sowie Teamleiter, die Regeln für Rotation, Widerruf und das Ausscheiden von Mitarbeitenden festlegen.

SECTION 01 Der Speicherort ist weniger wichtig als der Besitzer des Schlüssels

Die häufigste Fehlentscheidung lautet: „Die Datei ist nicht sichtbar, also ist der Schlüssel sicher.“ Das ist zu kurz gedacht. Ein in einer Konfigurationsdatei gespeicherter Schlüssel kann von jedem Prozess gelesen werden, der unter dem entsprechenden Benutzerkonto läuft und ausreichende Dateirechte besitzt. Umgekehrt ist eine Umgebungsvariable nicht automatisch geschützt, wenn Startskripte, Prozessdiagnosen, CI-Ausgaben oder Fehlermeldungen ihren Inhalt weiterreichen.

Für jede Konfiguration müssen Sie deshalb vier Fragen beantworten:

  1. Wer besitzt den DeepSeek API Key?
  2. Welches Konto darf ihn beim Start lesen?
  3. Wer kann ihn ersetzen oder widerrufen?
  4. Welche Aufgabe stoppt, wenn der Schlüssel ungültig wird?

Die offizielle API dokumentiert die Authentifizierung als Bearer-Token. Der Anbieter beschreibt also, wie der Schlüssel an die API übergeben wird, aber nicht automatisch, wie Ihr Mac, Ihr Sitzungsordner oder Ihre CI-Infrastruktur den Wert verwalten soll. (api-docs.deepseek.com)

Daraus entstehen in der Praxis mindestens fünf unterschiedliche Risiken:

  • Unklare Eigentümerschaft: Ein persönlicher Schlüssel landet in einem Teamkonto, obwohl die Kosten oder der Zugriff einem Projekt zugeordnet werden müssten.
  • Zu große Leserechte: Ein gemeinsamer Mac erlaubt mehreren interaktiven Benutzern Zugriff auf denselben Sitzungs- oder Konfigurationspfad.
  • Schwierige Wiederherstellung: Eine Aufgabe funktioniert nur auf einer bestimmten Maschine, weil der Schlüssel dort manuell hinterlegt wurde.
  • Unvollständige Rotation: Der neue Schlüssel wird eingetragen, aber laufende Prozesse verwenden weiterhin die alte Umgebung.
  • Leckage über Nebenkanäle: Ein Schlüssel erscheint in Shell-Historie, Startdateien, Debug-Ausgaben, Sitzungsprotokollen oder einem versehentlich versionierten Konfigurationsfile.

Die Entscheidung sollte daher nicht mit „UI gegen Datei“ beginnen, sondern mit der Ausführungsidentität: persönliche Sitzung, einzelner Prozess, Aufgabenkonto oder gemeinsam verwaltete Projektumgebung.

SECTION 02 Für persönliche Web-UI-Sitzungen genügt der integrierte Zugang

Wenn Sie DeepSeek Harness nur allein und interaktiv auf Ihrem Mac verwenden, ist der integrierte Web-UI-Zugang der kürzeste und nachvollziehbarste Weg. Nach der dokumentierten Standprüfung vom 18.08.2026 wird der Schlüssel in $DSH_HOME/.credentials.yaml geschrieben. Die Einstellungsoberfläche bewahrt dabei eine Referenz und zeigt anschließend lediglich eine maskierte Beschreibung an; der vollständige Wert wird nicht erneut im Webformular dargestellt.

Wo liegt der in DeepSeek Harness gespeicherte API Key?
Bei dieser Variante liegt die lokale Referenz im Verzeichnis unter $DSH_HOME/.credentials.yaml. Entscheidend ist jedoch: „Nicht im Interface vollständig sichtbar“ bedeutet nicht „für den ausführenden Prozess unlesbar“. Das Konto, unter dem DeepSeek Harness läuft, muss die Datei weiterhin verwenden können. Kopien, Backups, Synchronisationsordner und Fernzugriffe können deshalb zusätzliche Lesepfade schaffen.

Für eine Einzelperson ist dieser Ansatz sinnvoll, wenn alle folgenden Bedingungen erfüllt sind:

  • Der Mac wird nicht von mehreren Personen mit demselben Benutzerkonto bedient.
  • Der Sitzungs- und Konfigurationsordner liegt nicht in einem gemeinsam synchronisierten Projektverzeichnis.
  • Backups werden hinsichtlich vertraulicher Konfigurationsdateien geprüft.
  • Fernzugriff ist auf die tatsächlich benötigten Benutzer beschränkt.
  • Sie wissen, wer den Schlüssel im Provider-Konto ersetzen oder widerrufen darf.

Betriebssysteme unterscheiden grundsätzlich zwischen Besitzer, Gruppe und weiteren Benutzern. Die Dateirechte bestimmen, wer lesen oder schreiben darf; diese Trennung ist auch auf einem gemeinsam genutzten Mac die technische Grundlage. (support.apple.com)

Die Web-UI ist daher für persönliche Erprobung geeignet, aber nicht automatisch für eine Teamumgebung. Sobald andere Benutzer, Kundenprojekte oder automatisierte Prozesse beteiligt sind, müssen Sie die Kontogrenzen neu bewerten.

Wie wird der Schlüssel bei einer Web-UI-Konfiguration praktisch geschützt?
Sie schützen nicht nur die Anzeige im Browser, sondern auch $DSH_HOME, den Besitzer des Verzeichnisses, lokale Backups, Fernzugriff und Sitzungsprotokolle. Prüfen Sie außerdem, ob ein allgemeines Administratorkonto die Datei lesen kann. Ein eingeschränkter Benutzer ist meist besser als ein gemeinsam genutztes Administratorkonto, sofern die Aufgabe keine erhöhten Rechte benötigt.

SECTION 03 Python SDK und CI sollten den Schlüssel erst beim Start erhalten

Für Python SDK, Shell-Skripte, CI/CD und unabhängige Sitzungsverzeichnisse ist eine Laufzeit-Umgebungsvariable meistens die sauberere Trennung. Das offizielle Beispiel verwendet DEEPSEEK_API_KEY; in Python wird os.environ beim Prozessstart als Abbildung der verfügbaren Umgebungsvariablen bereitgestellt. (api-docs.deepseek.com)

Der Vorteil liegt nicht darin, dass Umgebungsvariablen grundsätzlich geheim wären. Der Vorteil liegt in der Austauschbarkeit: Ihr Quellcode, Ihr Sitzungsordner und Ihr Aufgabenprofil müssen beim Wechsel des Schlüssels nicht verändert werden. Der Prozess erhält den Wert beim Start, verwendet ihn für die Sitzung und kann anschließend mit einem anderen Wert neu gestartet werden.

Ein minimalistisches Muster ohne echten Schlüsselwert sieht so aus:

export DEEPSEEK_API_KEY="<zur Laufzeit setzen>"
python run_agent.py

In produktiven Abläufen sollte der Platzhalter nicht durch eine dauerhaft gespeicherte Shell-Datei mit echtem Wert ersetzt werden. Vermeiden Sie insbesondere:

  • export DEEPSEEK_API_KEY="..." in einer versionierten Datei,
  • echte Schlüssel in .env-Dateien ohne lokale Ausschlussregel,
  • Schlüsselwerte in Startparametern, die in Prozessdiagnosen auftauchen können,
  • Debug-Ausgaben wie print(os.environ["DEEPSEEK_API_KEY"]),
  • vollständige Umgebungsvariablen in Fehlerberichten oder Supportarchiven.

Eine .gitignore-Regel verhindert nur, dass bestimmte nicht bereits verfolgte Dateien neu erfasst werden. Sie entfernt keinen Schlüssel aus der Git-Historie, wenn die Datei schon einmal committed wurde. (git-scm.com)

Wie sollte das Python SDK den DeepSeek API Key lesen?
Das SDK oder Ihr Programm sollte ihn aus DEEPSEEK_API_KEY lesen, ohne den Wert selbst zu protokollieren. Der Prozessstart übernimmt die Zuordnung: lokales Terminal für einen Einzeltest, CI-Job für eine Pipeline oder ein eingeschränktes Aufgabenprofil für einen Remote-Prozess. Bei einem Schlüsselwechsel starten Sie den betroffenen Prozess mit der neuen Variable neu, anstatt den Quellcode anzupassen.

Der Wechsel zwischen persönlicher UI und SDK muss nicht zu einer gemeinsamen Ablage führen. Eine UI-Sitzung kann die lokale Referenz unter $DSH_HOME/.credentials.yaml nutzen, während ein Python-Aufruf ausschließlich die Laufzeitvariable erhält. Diese Trennung reduziert die Gefahr, dass ein automatisierter Prozess versehentlich den persönlichen Schlüssel eines interaktiven Benutzers übernimmt.

SECTION 04 Drei Speicherwege im direkten Vergleich

Die folgende Übersicht bewertet nicht nur die Bedienung, sondern Besitz, Wiederaufbau und Rotation. Die Begriffe „niedrig“, „mittel“ und „hoch“ sind qualitative Betriebsbewertungen, keine Messwerte.

Speicherweg Geeigneter Einsatz Wer liest den Schlüssel? Rotation Hauptrisiko
Integrierte Web-UI Persönliche interaktive Sitzung Benutzerkonto und Harness-Prozess Manuell über die UI oder den zugehörigen Provider Backups, Fernzugriff und zu weit gefasste Kontorechte
$DSH_HOME/.credentials.yaml Einzelner lokaler Harness-Kontext Prozess unter dem Besitzer des Sitzungsordners Datei- oder UI-Änderung plus Neustartprüfung Datei wird für „unsichtbar“ gehalten, obwohl sie lesbar bleibt
DEEPSEEK_API_KEY zur Laufzeit Python SDK, CI/CD, Batch- und Remote-Aufgaben Genau der gestartete Prozess Neue Injektion und kontrollierter Neustart Startskripte, Logs oder Diagnoseausgaben geben den Wert preis
Teamweit gemeinsam genutzter Schlüssel Nur bei klarer gemeinsamer Verantwortung Mehrere Benutzer oder Jobs Zentral, aber mit großer Ausfallwirkung Fehlende Nachvollziehbarkeit und gleichzeitige Unterbrechung aller Projekte

Ein einzelner Schlüssel für Kundenprojekt, internes Experiment und Produktionsaufgabe mag kurzfristig bequem sein. Er erschwert aber die Zuordnung von Kosten, die Untersuchung eines Missbrauchs und die abgestufte Deaktivierung. Wenn nur ein Projekt beendet werden soll, darf die Maßnahme nicht automatisch alle anderen Aufgaben stoppen.

Entscheidungskriterium Persönliche UI Laufzeitvariable Getrennte Teamkonten
Einzelne interaktive Person Sehr passend Möglich Meist unnötig
Wiederaufbaubare Aufgabe Eingeschränkt Sehr passend Passend
Mehrere Projekte Schwach Mit getrennten Profilen passend Sehr passend
Nachvollziehbare Verantwortlichkeit Begrenzt Gut über Aufgabenidentität Am stärksten
Einfacher manueller Start Am einfachsten Einfach nach Einrichtung Abhängig vom Betriebsprozess
Risiko bei gemeinsamem Mac Hoch, wenn Konten geteilt werden Mittel bis hoch ohne Kontentrennung Kontrollierbar

Die dritte Option ist häufig die richtige Mitte: kein persönlicher UI-Schlüssel für alle, aber auch kein undurchsichtiges Zentralgeheimnis, das jeder Prozess und jeder Benutzer verwenden kann.

Einsatzlage Primäre Wahl Rückfalloption Nicht empfohlen
Erste private Testsitzung Integrierter UI-Zugang Temporäre Laufzeitvariable Gemeinsamer Team-Schlüssel
Python-Programm auf persönlichem Mac DEEPSEEK_API_KEY UI nur für manuelle Gegenprobe Schlüssel im Quelltext
CI-Job oder Nachtaufgabe Aufgabenbezogene Laufzeitinjektion Separates Projektkonto Export-Befehl im Repository
Gemeinsamer Remote-Mac Getrennte Benutzer- und Aufgabenkonten Ein klar begrenztes Teamkonto Ein Schlüssel für alle Benutzer
Sicherheitskritisches Team Projekt- oder Aufgabenidentitäten mit dokumentierter Rotation Kontrollierte manuelle Übergabe Nicht dokumentierte Kopien

SECTION 05 Entscheidung nach Identität statt nach Bequemlichkeit

Verwenden Sie die folgende Verzweigung, bevor Sie einen Schlüssel eintragen:

  • Wenn nur Sie selbst interaktiv arbeiten, keine weiteren Benutzer denselben Kontokontext verwenden und der lokale Backupbereich geprüft ist, wählen Sie die integrierte Web-UI.
  • Wenn ein Python-Prozess, CI-Job oder Batchlauf reproduzierbar starten muss, injizieren Sie DEEPSEEK_API_KEY erst zur Laufzeit.
  • Wenn mehrere Projekte oder Kostenstellen beteiligt sind, verwenden Sie getrennte Schlüssel oder mindestens getrennte Aufgabenidentitäten; teilen Sie nicht standardmäßig einen universellen Schlüssel.
  • Wenn ein Remote-Mac von mehreren Personen genutzt wird, trennen Sie Administrator, Aufgaben- beziehungsweise Ausführungskonto und gewöhnlichen Zugriff.
  • Wenn Sie nicht bestimmen können, wer den Schlüssel widerruft, ist die Konfiguration noch nicht betriebsbereit.
  • Wenn Sitzungslogs, Fehlermeldungen oder Diagnosedateien den Wert ausgeben könnten, stoppen Sie die Inbetriebnahme, bevor echte Aufgaben laufen.
  • Wenn die Aufgabe nach einem Schlüsselwechsel ohne manuellen Eingriff weiterlaufen soll, brauchen Sie einen getesteten Neustart- und Abbruchpfad; DeepSeek Harness sollte dabei nicht als eingebautes automatisches Geheimnisverwaltungssystem behandelt werden.

Das beantwortet auch die Frage nach mehreren Benutzern auf einem Remote-Mac: Technisch kann ein Modellschlüssel von mehreren Aufgaben verwendet werden, organisatorisch ist ein gemeinsamer Schlüssel aber nur dann vertretbar, wenn Eigentümer, Leseberechtigung, Projektumfang, Kostenverantwortung und Rotation eindeutig festgelegt sind. Für Kundenprojekte und interne Aufgaben sollten Sie standardmäßig getrennte Identitäten bevorzugen.

SECTION 06 Ein kontrollierter Ablauf für Einrichtung und Rotation

Arbeiten Sie die Konfiguration als zeitliche Abfolge ab, nicht als einmaliges Einfügen eines Textwerts.

1. Einsatzklasse und Eigentümer festlegen

Notieren Sie vor der Einrichtung den Zweck: persönliche Sitzung, SDK-Entwicklung, CI/CD, Kundenprojekt oder interner Dienst. Benennen Sie eine Person oder Rolle, die den Schlüssel besitzt und seine Gültigkeit verantwortet. „Das Team“ ist als Eigentümer zu unpräzise, wenn niemand die letzte Entscheidung treffen kann.

2. Ausführungsidentität bestimmen

Legen Sie fest, welches Konto den Harness-Prozess startet. Auf einem persönlichen Mac ist dies häufig Ihr Benutzerkonto. Auf einem gemeinsam genutzten oder entfernten Mac sollte ein Aufgaben- oder Projektkonto verwendet werden, das keine unnötigen interaktiven Rechte besitzt.

Trennen Sie mindestens:

  • Administrationskonto,
  • Aufgaben- oder Ausführungskonto,
  • gewöhnliches Zugriffskonto.

Ein gewöhnlicher Benutzer sollte nicht automatisch die Datei oder die Laufzeitumgebung des Aufgabenprozesses lesen können. Die Kontentrennung muss dabei mit Dateirechten, Sitzungsordnern und Fernzugriff übereinstimmen.

3. Speicherweg auswählen

Nutzen Sie für eine Einzelperson die UI, für SDK und CI die Laufzeitvariable und für Teams eine nach Projekt oder Aufgabe getrennte Verwaltung. Schreiben Sie den vollständigen Schlüssel nicht in den Quelltext, nicht in eine dauerhafte Anleitung und nicht in ein gemeinsames Sitzungsarchiv.

Wenn Sie credentials.yaml beziehungsweise die vom Harness verwendete .credentials.yaml prüfen, dokumentieren Sie nur Pfad, Besitzer und erwartete Referenzstruktur. Veröffentlichen Sie niemals eine vollständige Datei mit einem echten Wert.

4. Erst einen negativen Test durchführen

Starten Sie eine isolierte Testaufgabe ohne gültigen Schlüssel. Prüfen Sie, ob der Prozess sauber mit einem Authentifizierungsfehler endet, ohne den fehlenden Wert oder andere sensible Variablen auszugeben. Danach setzen Sie einen gültigen Schlüssel ausschließlich in der vorgesehenen Quelle und führen eine minimale Anfrage aus.

Die offiziellen Integrationsbeispiele zeigen, dass Umgebungsvariablen bei terminalbasierten Abläufen vor dem Start gesetzt werden. (api-docs.deepseek.com)

5. Protokolle und Sitzungen kontrollieren

Suchen Sie nach dem Testlauf in:

  • Standardausgabe,
  • Standardfehlerausgabe,
  • CI-Artefakten,
  • Sitzungsaufzeichnungen,
  • temporären Startdateien,
  • Shell-Historie,
  • Support- und Diagnosepaketen.

Ein erfolgreicher API-Aufruf beweist nur, dass die Authentifizierung funktioniert. Er beweist nicht, dass der Schlüssel nicht an anderer Stelle gespeichert oder ausgegeben wurde.

6. Ersatz und Neustart testen

Ersetzen Sie den Schlüssel in einer kontrollierten Wartungsphase durch einen neuen Wert oder eine neue Referenz. Starten Sie den Prozess vollständig neu und prüfen Sie, welcher Schlüssel tatsächlich verwendet wird, ohne ihn auszugeben. Bei langlebigen Aufgaben müssen Sie zusätzlich feststellen, ob ein laufender Prozess die alte Umgebung weiterverwendet.

7. Widerruf und Stoppsignal definieren

Legen Sie schriftlich fest, was bei einem ungültigen Schlüssel passiert: neuer Start wird verhindert, laufende Aufgaben werden beendet oder nur weitere API-Aufrufe blockiert. Ein Schlüsselwechsel ist keine vollständige Abnahme, solange Sie nicht wissen, wie alte Prozesse, Warteschlangen und Sitzungen reagieren.

Kann eine alte Sitzung nach dem API-Key-Wechsel weiterlaufen?
Das lässt sich nicht pauschal mit „ja“ oder „nein“ beantworten. Ein neuer Schlüssel beeinflusst in erster Linie neue Authentifizierungsversuche und neu gestartete Prozesse. Eine bereits laufende Sitzung kann ihre bisherige Prozessumgebung oder eine bereits geladene Referenz weiterverwenden, bis sie beendet oder neu gestartet wird. Zusätzlich müssen Sie prüfen, ob die Sitzung selbst Modell- und Provider-Informationen protokolliert. Diese Identifikatoren sind nicht dasselbe wie der geheime Schlüssel und müssen separat bewertet werden.

SECTION 07 Was Sie bei sensiblen Teams zusätzlich dokumentieren sollten

Ein sicherheitsorientiertes Team sollte fünf Aktionen mit Verantwortlichen und Nachweisen versehen:

  1. Erstellen: Wer fordert einen neuen Schlüssel an und für welches Projekt?
  2. Übergeben: Über welchen kontrollierten Kanal gelangt die Referenz zum Aufgaben- oder Benutzerkonto?
  3. Verwenden: Welcher Prozess darf den Schlüssel lesen und welche Logs sind zulässig?
  4. Rotieren: Wer ersetzt den Wert, wann wird der Prozess neu gestartet und wie wird der Erfolg geprüft?
  5. Widerrufen: Wer sperrt den alten Schlüssel bei Austritt, Projektende oder Verdacht auf Offenlegung?

Die DSGVO-Frage liegt dabei nicht nur beim geheimen Wert selbst. Auch Sitzungsdaten, Projektpfade, Benutzernamen und Protokolle können personenbezogene oder vertrauliche Informationen enthalten. Prüfen Sie daher, welche Daten Ihr Remote-Betrieb speichert und wer sie exportieren darf. Die Datenschutzhinweise von VPSNIX sollten Sie mit Ihrer internen Protokoll- und Aufbewahrungsregel abgleichen.

Nicht als bereits integrierte DeepSeek-Harness-Funktion voraussetzen sollten Sie eine Betriebssystem-Schlüsselbundanbindung, ein Unternehmens-Geheimnisverwaltungssystem oder eine automatische Rotation. Solche Lösungen können Teil Ihrer Gesamtarchitektur sein, sind aber nach der hier zugrunde gelegten offiziellen Dokumentation nicht als eingebauter Standard zu behandeln.

Für die betriebliche Abnahme können Sie außerdem die VPSNIX-Hilfe zum Remote-Betrieb heranziehen und dort insbesondere Benutzerzugriff, Fernzugriff und Wiederherstellung mit Ihrer geplanten Aufgabenidentität abgleichen.

SECTION 08 Ein Mac-Mietmodell löst keine ungeklärte Schlüsselverantwortung

Ein eigener Mac ist für langfristige, dauerhaft laufende Arbeitslasten und physische Schnittstellen oft die passendere Wahl. Ein gemeinsam gemieteter oder entfernter Mac ist dagegen nicht automatisch sicherer: Ohne getrennte Konten, definierte Eigentümer und einen getesteten Austauschprozess entstehen dieselben Probleme wie auf einer schlecht verwalteten lokalen Maschine. Ein lokales Setup kann zusätzlich schwer reproduzierbar sein, manuelle Schlüsselkopien fördern und bei Ausfällen vom Zustand eines einzelnen Geräts abhängen.

Wenn Sie nur vorübergehend eine isolierte Umgebung für DeepSeek Harness, SDK-Tests oder einen Remote-Agenten benötigen, kann ein von VPSNIX bereitgestellter Mac praktischer sein, sofern Sie die Kontogrenzen und die Zuständigkeit für den DeepSeek API Key vor dem Start festlegen. Prüfen Sie dazu zuerst die verfügbaren VPSNIX-Angebote, und übernehmen Sie anschließend nicht einfach den privaten UI-Schlüssel in eine gemeinsame Umgebung. Die bessere Lösung ist meist: persönliche Tests getrennt halten, automatisierte Aufgaben per Laufzeitvariable starten und Teamprojekte über klar begrenzte Ausführungskonten betreiben.

Wer diese Zuordnung in dieser Woche sauber dokumentiert, verhindert nicht nur versehentliche Offenlegung. Sie können später auch nachvollziehen, welcher Prozess beendet, welcher Schlüssel rotiert und welches Projekt von einer Änderung betroffen ist.