Alle Artikel
2026-03-309 min

OpenClaw + Claude Max: Anthropic OAuth-Tokens automatisch erneuern – nie wieder stille Agents

AnthropicAuthenticationClaude MaxAutomationOpenClawSelf-Hosting

Der Tweet, der alles ausgelöst hat

Heute Morgen teilte jemand genau das, was die halbe OpenClaw-Community still leidet:

> *"Heute Morgen sind alle 6 meiner AI-Agents perfekt gelaufen — zum ersten Mal ohne dass ich etwas anfassen musste. Das ist neu. Ich betreibe OpenClaw mit Claude Max auf dem Mac Mini, und Anthropics OAuth Access-Tokens laufen alle 8 Stunden ab. Wenn das passiert, werden alle Agents still."*

Wenn du OpenClaw mit Claude Max (Anthropics Abo-Plan) betreibst, verwendest du keinen API-Key — sondern eine OAuth-Session, die Anthropic über einen Browser-Login ausstellt. Anders als ein API-Key, der nie abläuft, haben diese OAuth Access-Tokens eine harte TTL von 8 Stunden.

Alle 8 Stunden: Stille. Jeden Morgen: manuell fixen. Das ist der Standard — außer du löst es.

Dieser Beitrag zeigt, wie du die Erneuerung vollständig automatisierst, damit du es nie mehr anfassen musst.

---

Warum das passiert: OAuth vs. API-Key

Wenn du OpenClaw über Claude Max (nicht die API-Stufe) mit Anthropic verbindest, läuft die Auth so ab:

1. Du loggst dich via Browser ein — Anthropic stellt ein Access Token (kurzlebig, ~8h) und ein Refresh Token (langlebig) aus

2. OpenClaw verwendet das Access Token für jede Anfrage

3. Nach 8 Stunden läuft das Access Token ab — Anfragen geben 401 zurück

4. OpenClaw markiert das Konto als nicht authentifiziert — Agents hören auf zu antworten

Das Refresh Token kann ohne erneutes Login ein neues Access Token holen. Das Problem: Standardmäßig ruft nichts in deinem Setup diesen Refresh-Endpunkt automatisch auf.

---

Schritt 1: Tokens finden

OpenClaw speichert Auth-Credentials hier:

```bash

cat ~/.openclaw/config.json | grep -A 10 '"anthropic"'

```

Du suchst eine Struktur wie diese:

```json

{

"anthropic": {

"authType": "oauth",

"accessToken": "sk-ant-oaXXX...",

"refreshToken": "rt-XXXXX...",

"expiresAt": 1743091200000

}

}

```

Das `refreshToken` ist das, was du brauchst. Es ist langlebig (typischerweise 30–90 Tage) und kann ohne Benutzerinteraktion neue Access Tokens holen.

---

Schritt 2: Das Refresh-Skript

Erstelle dieses Skript unter `~/scripts/refresh-anthropic-token.sh`:

```bash

#!/bin/bash

set -e

CONFIG="$HOME/.openclaw/config.json"

BACKUP="$HOME/.openclaw/config.json.bak"

# Aktuelles Refresh Token auslesen

REFRESH_TOKEN=$(cat "$CONFIG" | python3 -c "

import json, sys

cfg = json.load(sys.stdin)

print(cfg.get('anthropic', {}).get('refreshToken', ''))

")

if [ -z "$REFRESH_TOKEN" ]; then

echo "FEHLER: Kein Refresh Token in config.json gefunden"

exit 1

fi

# Anthropics Token-Endpunkt aufrufen

RESPONSE=$(curl -s -X POST "https://console.anthropic.com/v1/oauth/token" \

-H "Content-Type: application/json" \

-d "{

\"grant_type\": \"refresh_token\",

\"refresh_token\": \"$REFRESH_TOKEN\"

}")

NEW_ACCESS_TOKEN=$(echo "$RESPONSE" | python3 -c "

import json, sys

data = json.load(sys.stdin)

if 'access_token' not in data:

print('FEHLER: ' + str(data), file=sys.stderr)

sys.exit(1)

print(data['access_token'])

")

NEW_EXPIRES=$(echo "$RESPONSE" | python3 -c "

import json, sys, time

data = json.load(sys.stdin)

expires_in = data.get('expires_in', 28800)

print(int((time.time() + expires_in) * 1000))

")

# Backup und Update

cp "$CONFIG" "$BACKUP"

python3 -c "

import json, sys

with open('$CONFIG') as f:

cfg = json.load(f)

cfg['anthropic']['accessToken'] = '$NEW_ACCESS_TOKEN'

cfg['anthropic']['expiresAt'] = $NEW_EXPIRES

with open('$CONFIG', 'w') as f:

json.dump(cfg, f, indent=2)

print('Token aktualisiert. Läuft ab:', $NEW_EXPIRES)

"

# OpenClaw Gateway neu laden, damit es das neue Token erkennt

openclaw gateway restart --quiet 2>/dev/null || true

echo "Fertig. Neues Token aktiv."

```

Ausführbar machen:

```bash

chmod +x ~/scripts/refresh-anthropic-token.sh

```

---

Schritt 3: Testen

Einmal manuell ausführen, um sicherzustellen, dass alles funktioniert:

```bash

~/scripts/refresh-anthropic-token.sh

```

Du solltest sehen:

```

Token aktualisiert. Läuft ab: 1743120000000

Fertig. Neues Token aktiv.

```

Dann verifizieren, dass deine Agents noch antworten.

---

Schritt 4: Mit Cron automatisieren

Alle 6 Stunden erneuern — sicher vor dem 8-Stunden-Ablauf, mit 2 Stunden Puffer.

Zu Crontab hinzufügen:

```bash

crontab -e

```

```cron

0 */6 * * * /bin/bash $HOME/scripts/refresh-anthropic-token.sh >> $HOME/.openclaw/logs/token-refresh.log 2>&1

```

Oder mit OpenClaws eingebautem Cron-System (empfohlen):

```json

{

"cron": {

"jobs": [

{

"name": "Anthropic Token Refresh",

"schedule": { "kind": "every", "everyMs": 21600000 },

"payload": {

"kind": "systemEvent",

"text": "Führe aus: bash $HOME/scripts/refresh-anthropic-token.sh"

}

}

]

}

}

```

---

Schritt 5: Health Check hinzufügen

Das Skript ist still, wenn es funktioniert — aber du willst wissen, wenn es *scheitert*. Füge eine Benachrichtigung hinzu:

```bash

# Am Anfang des Skripts, alles in Error-Handling einwickeln:

trap 'echo "TOKEN REFRESH FEHLGESCHLAGEN am $(date)" | openclaw notify --channel telegram' ERR

```

---

Alternative: API-Stufe verwenden

Wenn das zu viel Aufwand ist, ist der sauberste Weg der Wechsel von Claude Max (Abo) zur Anthropic API (Pay-per-Token):

| | Claude Max | Anthropic API |

|---|---|---|

| Auth | OAuth (8h TTL) | API-Key (kein Ablauf) |

| Kosten | Monatliche Flatrate | Pay-per-Token |

| Am besten für | Intensiver persönlicher Einsatz | Vorhersehbare Workloads |

| Token-Management | Manuell oder per Skript | Nicht nötig |

Für die meisten OpenClaw-Setups mit 3–6 Agents, die 24/7 laufen, ist die API-Stufe oft günstiger als Claude Max — besonders wenn `claude-haiku-3-5` für Routineaufgaben und `claude-sonnet` nur für komplexe Fälle verwendet wird.

---

Debugging: Wenn das Refresh fehlschlägt

401 am Refresh-Endpunkt:

Dein Refresh Token selbst könnte abgelaufen sein. Du musst dich manuell neu authentifizieren: `openclaw auth login --provider anthropic`.

Config-Update erfolgreich, aber Agents geben weiter 401:

Das Gateway hat das neue Token nicht übernommen. Neustart erzwingen: `openclaw gateway restart`.

Refresh Token nicht in config.json:

Ältere OpenClaw-Versionen speichern Tokens anders. Prüfe: `~/.openclaw/auth/` — dort könnten Provider-spezifische Token-Dateien sein.

curl: command not found in Cron:

Cron läuft mit minimalem PATH. Verwende den vollen Pfad (`/usr/bin/curl`) oder source dein Profil am Anfang des Skripts: `source $HOME/.profile`.

---

Der OpenClaw-native Ansatz

Ab OpenClaw 0.9+ gibt es einen saubereren Weg: Das Gateway hat einen eingebauten Auth Refresh Hook. Direkt in der Konfiguration:

```json

{

"providers": {

"anthropic": {

"authType": "oauth",

"autoRefresh": true,

"refreshIntervalMs": 21600000

}

}

}

```

Mit `autoRefresh: true` übernimmt das Gateway die Token-Rotation intern — kein Skript, kein Cron-Job. Das ist der empfohlene Ansatz für 0.9+. Version prüfen: `openclaw --version`.

Bei älteren Versionen ist der Skript-Ansatz die zuverlässige Alternative.

---

Zusammenfassung

| Problem | Anthropic OAuth-Tokens laufen alle 8 Stunden ab |

|---|---|

| Symptom | Alle Agents werden über Nacht still |

| Fix (per Skript) | refresh-anthropic-token.sh + Cron alle 6h |

| Fix (nativ) | `autoRefresh: true` in der Config (OpenClaw 0.9+) |

| Radikale Option | Wechsel zur Anthropic API (API-Keys laufen nicht ab) |

Das erste Mal, wenn dich das um 3 Uhr morgens trifft — alle 6 Agents tot, Kundenansichten aufgestapelt — reparierst du es in 20 Minuten und denkst nie wieder daran. Dafür ist dieser Beitrag da.

Die vollständige Konfiguration, alle Skripte und das Monitoring-Setup findest du im OpenClaw Setup Playbook.

Also available in English. 🇬🇧

Mehr erfahren?

Unser Playbook enthält 18 detaillierte Kapitel — komplett auf Deutsch.

Zum Playbook