Fehlerbehebung: Integrationen
Google Workspace
OAuth-Token abgelaufen oder widerrufen
Google OAuth Refresh-Tokens koennen widerrufen werden (durch den Benutzer, durch Google oder durch Inaktivitaet). Wenn dies passiert:
Google OAuth token exchange failedOder Sie sehen 401-Fehler bei Google-API-Aufrufen.
Loesung: Erneut authentifizieren:
bash
triggerfish connect googleDies oeffnet einen Browser fuer den OAuth-Zustimmungsablauf. Nach der Genehmigung werden die neuen Tokens im Schluesselbund gespeichert.
"No refresh token"
Der OAuth-Ablauf hat ein Access-Token, aber kein Refresh-Token zurueckgegeben. Dies passiert, wenn:
- Sie die App zuvor bereits autorisiert haben (Google sendet das Refresh-Token nur bei der ersten Autorisierung)
- Der OAuth-Zustimmungsbildschirm keinen Offline-Zugriff angefordert hat
Loesung: Widerrufen Sie den App-Zugriff in den Google-Kontoeinstellungen, dann fuehren Sie triggerfish connect google erneut aus. Diesmal wird Google ein neues Refresh-Token senden.
Gleichzeitige Aktualisierungsverhinderung
Wenn mehrere Anfragen gleichzeitig eine Token-Aktualisierung ausloesen, serialisiert Triggerfish diese, sodass nur eine Aktualisierungsanfrage gesendet wird. Wenn Sie Timeouts waehrend der Token-Aktualisierung sehen, kann es sein, dass die erste Aktualisierung zu lange dauert.
GitHub
"GitHub token not found in keychain"
Die GitHub-Integration speichert das Personal Access Token im Betriebssystem-Schluesselbund unter dem Schluessel github-pat.
Loesung:
bash
triggerfish connect github
# oder manuell:
triggerfish config set-secret github-pat ghp_...Token-Format
GitHub unterstuetzt zwei Token-Formate:
- Klassische PATs:
ghp_... - Feingranulare PATs:
github_pat_...
Beide funktionieren. Der Setup-Wizard verifiziert das Token durch Aufruf der GitHub-API. Wenn die Verifizierung fehlschlaegt:
GitHub token verification failed
GitHub API request failedPruefen Sie, ob das Token die erforderlichen Scopes hat. Fuer volle Funktionalitaet benoetigen Sie: repo, read:org, read:user.
Clone-Fehler
Das GitHub-Clone-Tool hat Auto-Retry-Logik:
- Erster Versuch: klont mit dem angegebenen
--branch - Wenn der Branch nicht existiert: wiederholt ohne
--branch(verwendet Standard-Branch)
Wenn beide Versuche fehlschlagen:
Clone failed on retry
Clone failedPruefen Sie:
- Token hat den
repo-Scope - Repository existiert und das Token hat Zugriff
- Netzwerkverbindung zu github.com
Rate-Limiting
GitHubs API-Rate-Limit betraegt 5.000 Anfragen/Stunde fuer authentifizierte Anfragen. Die verbleibende Rate-Limit-Anzahl und die Zuruecksetzungszeit werden aus den Antwort-Headern extrahiert und in Fehlermeldungen eingeschlossen:
Rate limit: X remaining, resets at HH:MM:SSEs gibt kein automatisches Backoff. Warten Sie, bis das Rate-Limit-Fenster zurueckgesetzt wird.
Notion
"Notion enabled but token not found in keychain"
Die Notion-Integration erfordert ein internes Integrationstoken, das im Schluesselbund gespeichert ist.
Loesung:
bash
triggerfish connect notionDies fordert zur Eingabe des Tokens auf und speichert es im Schluesselbund, nachdem es mit der Notion-API verifiziert wurde.
Token-Format
Notion verwendet zwei Token-Formate:
- Interne Integrations-Tokens:
ntn_... - Legacy-Tokens:
secret_...
Beide werden akzeptiert. Der Verbindungsassistent validiert das Format vor dem Speichern.
Rate-Limiting (429)
Die Notion-API ist auf etwa 3 Anfragen pro Sekunde beschraenkt. Triggerfish hat eingebautes Rate-Limiting (konfigurierbar) und Wiederholungslogik:
- Standardrate: 3 Anfragen/Sekunde
- Wiederholungen: bis zu 3 Mal bei 429
- Backoff: exponentiell mit Jitter, beginnend bei 1 Sekunde
- Beachtet den
Retry-After-Header aus der Notion-Antwort
Wenn Sie immer noch Rate-Limits erreichen:
Notion API rate limited, retryingReduzieren Sie gleichzeitige Operationen oder senken Sie das Rate-Limit in der Konfiguration.
404 Not Found
Notion: 404 Not FoundDie Ressource existiert, ist aber nicht mit Ihrer Integration geteilt. In Notion:
- Oeffnen Sie die Seite oder Datenbank
- Klicken Sie auf das "..."-Menue > "Verbindungen"
- Fuegen Sie Ihre Triggerfish-Integration hinzu
"client_secret removed" (Breaking Change)
In einem Sicherheitsupdate wurde das client_secret-Feld aus der Notion-Konfiguration entfernt. Wenn Sie dieses Feld in Ihrer triggerfish.yaml haben, entfernen Sie es. Notion verwendet jetzt nur noch das im Schluesselbund gespeicherte OAuth-Token.
Netzwerkfehler
Notion API network request failed
Notion API network error: <message>Die API ist nicht erreichbar. Pruefen Sie Ihre Netzwerkverbindung. Wenn Sie sich hinter einem Firmenproxy befinden, muss die Notion-API (api.notion.com) erreichbar sein.
CalDAV (Kalender)
Credential-Aufloesung fehlgeschlagen
CalDAV credential resolution failed: missing username
CalDAV credential resolution failed: secret not foundDie CalDAV-Integration benoetigt einen Benutzernamen und ein Passwort:
yaml
caldav:
server_url: "https://calendar.example.com/dav"
username: "ihr-benutzername"
credential_ref: "secret:caldav:password"Speichern Sie das Passwort:
bash
triggerfish config set-secret caldav:password <ihr-passwort>Discovery-Fehler
CalDAV verwendet einen mehrstufigen Discovery-Prozess:
- Die Principal-URL finden (PROPFIND auf Well-Known-Endpunkt)
- Das Calendar-Home-Set finden
- Verfuegbare Kalender auflisten
Wenn ein Schritt fehlschlaegt:
CalDAV principal discovery failed
CalDAV calendar-home-set discovery failed
CalDAV calendar listing failedHaeufige Ursachen:
- Falsche Server-URL (einige Server benoetigen
/dav/principals/oder/remote.php/dav/) - Anmeldedaten abgelehnt (falscher Benutzername/Passwort)
- Server unterstuetzt kein CalDAV (einige Server bewerben WebDAV, aber nicht CalDAV)
ETag-Konflikt bei Update/Loeschen
ETag mismatch — the event was modified by another client. Fetch the latest version and retry.CalDAV verwendet ETags fuer optimistische Nebenlaeufikeitskontrolle. Wenn ein anderer Client (Telefon, Web) das Ereignis zwischen Ihrem Lesen und Ihrem Update geaendert hat, stimmt das ETag nicht ueberein.
Loesung: Der Agent sollte das Ereignis erneut abrufen, um das aktuelle ETag zu erhalten, und dann die Operation wiederholen. Dies wird in den meisten Faellen automatisch behandelt.
"CalDAV credentials not available, executor deferred"
Der CalDAV-Executor startet in einem aufgeschobenen Zustand, wenn Anmeldedaten beim Start nicht aufgeloest werden koennen. Dies ist nicht schwerwiegend; der Executor meldet Fehler, wenn Sie versuchen, CalDAV-Tools zu verwenden.
MCP (Model Context Protocol) Server
Server nicht gefunden
MCP server '<name>' not foundDer Tool-Aufruf referenziert einen MCP-Server, der nicht konfiguriert ist. Pruefen Sie Ihren mcp_servers-Abschnitt in triggerfish.yaml.
Server-Binaerdatei nicht im PATH
MCP-Server werden als Subprozesse gestartet. Wenn die Binaerdatei nicht gefunden wird:
MCP server '<name>': <validation error>Haeufige Probleme:
- Der Befehl (z.B.
npx,python,node) ist nicht im PATH des Daemons - systemd/launchd-PATH-Problem: Der Daemon erfasst Ihren PATH zum Installationszeitpunkt. Wenn Sie das MCP-Server-Tool nach der Installation des Daemons installiert haben, installieren Sie den Daemon erneut, um den PATH zu aktualisieren:
bash
triggerfish stop
triggerfish dive --install-daemonServer-Abstuerze
Wenn ein MCP-Server-Prozess abstuerzt, wird die Leseschleife beendet und der Server wird nicht mehr verfuegbar. Es gibt keine automatische Wiederverbindung.
Loesung: Starten Sie den Daemon neu, um alle MCP-Server erneut zu starten.
SSE-Transport blockiert
MCP-Server, die SSE (Server-Sent Events) Transport verwenden, unterliegen SSRF-Pruefungen:
MCP SSE connection blocked by SSRF policySSE-URLs, die auf private IP-Adressen zeigen, werden blockiert. Dies ist beabsichtigt. Verwenden Sie stattdessen den stdio-Transport fuer lokale MCP-Server.
Tool-Aufruf-Fehler
tools/list failed: <message>
tools/call failed: <message>Der MCP-Server hat mit einem Fehler geantwortet. Dies ist der Fehler des Servers, nicht von Triggerfish. Pruefen Sie die eigenen Logs des MCP-Servers fuer Details.
Obsidian
"Vault path does not exist"
Vault path does not exist: /pfad/zum/vaultDer konfigurierte Vault-Pfad in plugins.obsidian.vault_path existiert nicht. Stellen Sie sicher, dass der Pfad korrekt und erreichbar ist.
Pfad-Traversierung blockiert
Path traversal rejected: <path>
Path escapes vault boundary: <path>Ein Notiz-Pfad hat versucht, das Vault-Verzeichnis zu verlassen (z.B. mit ../). Dies ist eine Sicherheitspruefung. Alle Notiz-Operationen sind auf das Vault-Verzeichnis beschraenkt.
Ausgeschlossene Ordner
Path is excluded: <path>Die Notiz befindet sich in einem Ordner, der in exclude_folders aufgefuehrt ist. Um darauf zuzugreifen, entfernen Sie den Ordner aus der Ausschlussliste.
Klassifizierungsdurchsetzung
Obsidian read blocked: classification exceeds session taint
Obsidian write-down blockedDer Vault oder ein bestimmter Ordner hat eine Klassifizierungsstufe, die mit dem Session-Taint in Konflikt steht. Siehe Sicherheits-Fehlerbehebung fuer Details zu Write-Down-Regeln.
