The Problem
n8n’s REST API (PUT /api/v1/workflows/{id}) silently detaches credential bindings when updating a workflow, even when credential IDs are preserved in the JSON payload. This is undocumented and causes every API-deployed workflow to fail on first execution.
The Protocol
We developed a mandatory post-deployment checklist, now codified in.opencode/skills/n8n-deployment.skill.md:
Pre-Deploy
- Strip the payload to only
name,nodes,connections,settings— never sendactive,id,meta,pinData,versionId, ortags. - If the workflow has duplicate/WIP nodes, strip them with a jq filter before pushing.
- Record the credential IDs for each node type (GitHub, Anthropic, SSH, etc.).
Deploy
Post-Deploy (Critical)
- Open the workflow in the n8n editor at
hab.so1.io. - Click into every node that uses credentials.
- Re-select the credential from the dropdown — even though it already displays the correct name.
- Save the workflow in the editor.
- Run a manual test execution to verify all credential-dependent nodes succeed.
Known Credential IDs
| Credential | ID | Used By |
|---|---|---|
| GitHub (Dev4rno) | FhglvXmXMeC2SQTl | FORGE |
| GitHub (TOMMY) | tSg1ejqnd5r3clEg | TOMMY |
| Anthropic (“google_ai_key”) | PdEKB19B1R0PQ4th | TOMMY |
| SSH | Instance-level config | TOMMY |