- Discovery becomes harder: lists with dozens or hundreds of workspaces slow down finding the right one.
- Repetitive changes are error-prone: updating variables or permissions per-workspace doesn’t scale.
- Team boundaries blur: everyone sees the same global list with no natural separation.
- Duplication and inconsistency: teams recreate identical variable configurations (for example, provider credentials) across many workspaces.


- Every workspace belongs to exactly one project.
- Workspaces cannot be in multiple projects or outside a project; each workspace is assigned to one and only one project.
- A default project is created for every organization.
- HCP Terraform creates a default project on organization creation. You may rename it, but you cannot delete it.
The default project guarantees every workspace has a project. Rename it to match your naming conventions, but note it cannot be removed. - Scoped team permissions:
- Grant teams access at the project level instead of on each workspace. Any current or future workspace added to that project inherits the project-level permissions automatically.
- Project-level variable sets:
- Attach variable sets (or organization variable sets) to the project so they apply to current and future workspaces in that project. This reduces duplication and enforces consistency.
- Execution mode inheritance:
- The organization defines an execution-mode default (remote, local, or agent). Projects can adopt sensible defaults for their workspaces, while individual workspaces retain the ability to override execution mode when needed.
- Moving workspaces:
- Move workspaces between projects to reflect team reorganizations or shifting responsibilities without re-creating the workspace.
- Infrastructure-as-code for project assignments:
- Manage workspace ↔ project relationships programmatically using the Terraform Cloud API or the Terraform
tfeprovider. Consult the provider/API docs for exact fields and examples: - Terraform Cloud API: https://www.terraform.io/cloud-docs/api-docs
tfeprovider docs: https://registry.terraform.io/providers/hashicorp/tfe/latest/docs
- Manage workspace ↔ project relationships programmatically using the Terraform Cloud API or the Terraform
- Deleting projects:
- A project must be empty before it can be deleted. Move or delete workspaces in a project prior to removing the project to avoid accidental orphaning of workspaces.
Only empty projects can be deleted. Always reassign or remove workspaces before attempting to delete a project.

Summary
Projects are the organizational layer between your organization and individual workspaces in Terraform Cloud/HCP Terraform. They reduce workspace sprawl by providing grouping, scoped permissions, shared variable sets, and execution-mode inheritance—making workspace management more scalable, consistent, and secure.
Next steps / walkthrough
A follow-up walkthrough demonstrates how to:
- Create a new project,
- Assign existing workspaces to a project,
- Move workspaces between projects, and
- Attach project-level variable sets.
- Terraform Cloud API: https://www.terraform.io/cloud-docs/api-docs
tfeprovider (Terraform Cloud provider): https://registry.terraform.io/providers/hashicorp/tfe/latest/docs- Terraform Cloud documentation: https://www.terraform.io/cloud-docs