zitadel-terraform

Manage ZITADEL identity platform resources as code using the Terraform provider.

4|2|Updated Jun 1, 2026
One-click install
npx skills add https://github.com/Aidas-dev/k8s-agent-skills --skill zitadel-terraform-aidas-dev
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: zitadel-terraform
Source: https://github.com/Aidas-dev/k8s-agent-skills/tree/main/skills/zitadel-terraform
Command: npx skills add https://github.com/Aidas-dev/k8s-agent-skills --skill zitadel-terraform-aidas-dev

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Configuring ZITADEL organizations, projects, applications, users, and policies through the UI is manual and non-repeatable. This Skill provides complete reference coverage of the zitadel/zitadel Terraform provider so identity infrastructure can be defined, versioned, and applied as code. ## Core Features & Use Cases - Full Resource Coverage: Organizations, projects, roles, grants, OIDC/API/SAML applications, human and machine users, PATs, identity providers (OIDC, LDAP, GitHub, Google, and more), default and org-level policies, actions, message templates, and email/SMS providers. - Auth Method Guidance: Documents PAT, JWT profile, JWT file, and System API authentication, including the gateway gRPC 403 workaround and the system_api requirement for instance-level resources. - Use Case: Bootstrap a new ZITADEL organization with a project, OIDC web application, machine user for CI, and a personal access token in a single terraform apply, then import existing resources into state. ## Quick Start Ask the agent to write Terraform configuration that creates a ZITADEL organization, project, and OIDC web application using the zitadel provider.

Frequently Asked Questions about zitadel-terraform

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I manage ZITADEL resources with Terraform?▼

Use the zitadel/zitadel Terraform provider to declare organizations, projects, applications, users, and policies as HCL resources. Configure the provider with a domain and one authentication method such as a personal access token or JWT profile file, then run terraform apply.

What authentication methods does the ZITADEL Terraform provider support?▼

The provider supports personal access tokens, JWT profile files or inline JSON for service accounts, pre-signed JWT files, and a system_api block for instance-level operations. JWT profile is preferred for long-running automation since PATs expire.

Why does the ZITADEL provider fail with a 403 through my gateway?▼

Some ingress gateways such as Cilium Gateway return 403 for gRPC traffic even with GRPCRoute configured. The workaround is to bypass the gateway with kubectl port-forward, a hosts entry, and a PAT, then apply with insecure mode enabled.

What is the difference between zitadel_org and zitadel_organization?▼

zitadel_organization uses the org/v2 API and targets ZITADEL 4.x and later, while zitadel_org is the backward-compatible resource that auto-falls back across v3 and v4. Prefer zitadel_organization for new deployments on ZITADEL 4.x.

Why do zitadel_system_features and instance resources fail with PAT auth?▼

Instance-level resources like zitadel_system_features and zitadel_instance_* require System API authentication configured in the provider block. A PAT fails with AUTH-5mWD2 even for IAM_OWNER users, which is intentional by design.

How do I import existing ZITADEL resources into Terraform state?▼

Use terraform import with the format <id>[:<org_id>][:<additional_fields>], for example terraform import zitadel_project.example 'projectID:orgID'. Default policies are singletons and should be imported before managing them with Terraform.