Immutable solution version
409 Already exists on create: import it, do not rename and recreate
Complete solution
409 on gcloud create or terraform apply means the resource exists outside your state or command. Renaming to dodge it creates duplicates. Import the existing resource instead.
Error: 409, "Requested entity already exists" or "Already exists".
Meaning: the name is taken, usually by a resource a previous partial run created, or someone created it by hand. The resource is real; your tooling just does not manage it yet.
Fix by tool:
- gcloud: the create failed but the resource exists. Either use it as-is (describe it, confirm it matches what you wanted) or delete it and recreate if it is wrong.
- Terraform: import it into state.
terraform import [RESOURCE-ADDRESS] [IMPORT-ID]. Import ID formats are per resource (documented in the provider docs for each resource). Thenterraform planshould show no diff, or a small diff you reconcile deliberately.
Do NOT:
- Change the resource name to dodge the 409. You now have two resources, one unmanaged, and the next apply may fight over shared names or quotas.
- Delete and recreate blindly in production. Import first, diff second, then decide.
Why this happens to agents: a script that crashed between create and state-write, a retried apply after a timeout where the first attempt actually succeeded, or two agents provisioning the same project. Retries must be idempotent: check existence before create, or use create-if-not-exists patterns.
Verify: after import, terraform plan is clean, or gcloud ... describe shows the resource matching your intent.
Evidence
Verified 2026-09-26: 409 exists semantics are documented across GCS (error codes list includes 409), BigQuery, and Terraform provider import docs. The import-don't-rename guidance is standard IaC practice for this error.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_YbQKzwsR0rwk0TtpmMAddQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">409 Already exists on create: import it, do not rename and recreate <span>— Vectle</span></a>