Allow multiple custom subject templates
It would be helpful if it were possible to apply custom subject templates at the space level, or as contexts. That way calls coming from some spaces/stacks have different subject templates that other spaces/stacks. This would give us the flexibility to adjust the template based on customer needs instead of purely at the instance level.
π‘ Feature Requests
12 days ago
Allow multiple custom subject templates
It would be helpful if it were possible to apply custom subject templates at the space level, or as contexts. That way calls coming from some spaces/stacks have different subject templates that other spaces/stacks. This would give us the flexibility to adjust the template based on customer needs instead of purely at the instance level.
π‘ Feature Requests
12 days ago
β¬οΈ Gathering votes
Separate, lower priority drift detection run queue
Instead of the current behavior of drift detection runs being skipped if there are not available workers, it would be nice for there to be a separate queue for drift detection runs. The separate queue would have to be prioritized lower than the planned/tracked runs so that it is never pulled from when there are planned/tracked runs waiting to execute. This prevents users from having to space out drift detection runs evenly during off hours to ensure they all get run. It is both difficult to maintain and initially configure. There are probably many other solutions to the same problem.
π‘ Feature Requests
about 1 month ago
Workers
β¬οΈ Gathering votes
Separate, lower priority drift detection run queue
Instead of the current behavior of drift detection runs being skipped if there are not available workers, it would be nice for there to be a separate queue for drift detection runs. The separate queue would have to be prioritized lower than the planned/tracked runs so that it is never pulled from when there are planned/tracked runs waiting to execute. This prevents users from having to space out drift detection runs evenly during off hours to ensure they all get run. It is both difficult to maintain and initially configure. There are probably many other solutions to the same problem.
π‘ Feature Requests
about 1 month ago
Workers
π Discovery
Allow context view to show attached stacks
Iβd like to be able to see within the context view if stacks are attached either by showing autoattched to x number of stacks or - with no stacks attached, for when removing a stack the context kicks and isnβt always tidyβd up.
π‘ Feature Requests
1 day ago
Contexts
π Discovery
Allow context view to show attached stacks
Iβd like to be able to see within the context view if stacks are attached either by showing autoattched to x number of stacks or - with no stacks attached, for when removing a stack the context kicks and isnβt always tidyβd up.
π‘ Feature Requests
1 day ago
Contexts
Automation for post-approval run confirmations
When a stack has Autodeploy enabled and a run reaches UNCONFIRMED due solely to a pending policy approval (not a manual review requirement), approving that policy should auto-confirm the run and let it proceed to apply β no separate manual click. Reviewed documentation on enabling Autodeploy, which allows approved runs to proceed automatically, and using plan policies that return `warn` to require review only when necessary. Setup involves plan policies issuing warnings, approval policies requiring manual approval, and notifications via Slack, but the final confirmation step remains manual, which can be unintuitive. Exploring if this manual confirmation can be eliminated or automated.
π‘ Feature Requests
3 days ago
Policies
Automation for post-approval run confirmations
When a stack has Autodeploy enabled and a run reaches UNCONFIRMED due solely to a pending policy approval (not a manual review requirement), approving that policy should auto-confirm the run and let it proceed to apply β no separate manual click. Reviewed documentation on enabling Autodeploy, which allows approved runs to proceed automatically, and using plan policies that return `warn` to require review only when necessary. Setup involves plan policies issuing warnings, approval policies requiring manual approval, and notifications via Slack, but the final confirmation step remains manual, which can be unintuitive. Exploring if this manual confirmation can be eliminated or automated.
π‘ Feature Requests
3 days ago
Policies
Namespace github checks
We have 2 apps that send checks for separate self-hosted instances. (though this could happen if you have 2 github integrations for whatever reason. We would like the ability to configure the spacelift/ prefix in the checks. so that we can have spacelift-a/ and spacelift-b/ in our checks list.
π‘ Feature Requests
3 days ago
Integrations
Namespace github checks
We have 2 apps that send checks for separate self-hosted instances. (though this could happen if you have 2 github integrations for whatever reason. We would like the ability to configure the spacelift/ prefix in the checks. so that we can have spacelift-a/ and spacelift-b/ in our checks list.
π‘ Feature Requests
3 days ago
Integrations
Increase concurrency of post-plan per-unit processing for large Terragrunt stacks
On large native Terragrunt stacks, the post-plan per-unit processing contributes to a large amount of the time the planning stage takes. The request is to increase the concurrency of the post-plan per-unit step.
π‘ Feature Requests
19 days ago
Increase concurrency of post-plan per-unit processing for large Terragrunt stacks
On large native Terragrunt stacks, the post-plan per-unit processing contributes to a large amount of the time the planning stage takes. The request is to increase the concurrency of the post-plan per-unit step.
π‘ Feature Requests
19 days ago
Specific Changes in Stack Update Audit Events
Stack update audit events are currently missing an important piece of context for audits in that they only include the state of the stack after the update. With the current info we can see that a user updated a stack, but not the specific change to the stack that the user made. My team would like to see the specific change made to the stack in the audit log event, for instance on setting a new branch for the code source, the before and after branch name. More broadly this seems applicable to any resource that can be changed in an update action.
π‘ Feature Requests
5 days ago
Access Control
Specific Changes in Stack Update Audit Events
Stack update audit events are currently missing an important piece of context for audits in that they only include the state of the stack after the update. With the current info we can see that a user updated a stack, but not the specific change to the stack that the user made. My team would like to see the specific change made to the stack in the audit log event, for instance on setting a new branch for the code source, the before and after branch name. More broadly this seems applicable to any resource that can be changed in an update action.
π‘ Feature Requests
5 days ago
Access Control
βοΈ In Progress
All JSON Diff view to default to unified view
Whenever I use the JSON diff view I unclick the option βShow side by sideβ so I can view it as a unified diff. I would love to either have the browser remember what I selected last (so I only have to click it once) or have a user-level setting where I can choose which view I prefer, instead of having to switch to unified diff every time.
π‘ Feature Requests
5 days ago
βοΈ In Progress
All JSON Diff view to default to unified view
Whenever I use the JSON diff view I unclick the option βShow side by sideβ so I can view it as a unified diff. I would love to either have the browser remember what I selected last (so I only have to click it once) or have a user-level setting where I can choose which view I prefer, instead of having to switch to unified diff every time.
π‘ Feature Requests
5 days ago
Aggregate proposed run changes into a single GitHub PR comment
Currently, notification policies evaluate per-run event, so each policy execution can only see a single run. This means: Multiple PR comments (one per run) clutter the PR timeline Reviewers must click into each run individually to see what changed Teams resort to building external aggregators (webhooks β custom service β GitHub API) to work around this Add the ability for native support for aggregating all proposed runs triggered by the same commit/PR into a single GitHub PR comment
π‘ Feature Requests
about 1 month ago
Aggregate proposed run changes into a single GitHub PR comment
Currently, notification policies evaluate per-run event, so each policy execution can only see a single run. This means: Multiple PR comments (one per run) clutter the PR timeline Reviewers must click into each run individually to see what changed Teams resort to building external aggregators (webhooks β custom service β GitHub API) to work around this Add the ability for native support for aggregating all proposed runs triggered by the same commit/PR into a single GitHub PR comment
π‘ Feature Requests
about 1 month ago
Templates within Templates
We would like to request support for reusable template composition in Spacelift templates. The goal is to allow a Spacelift template to reference other templates as reusable building blocks, while still supporting local stack definitions in the same parent template. This would extend the existing template model rather than replace it. Today, templates already define user inputs and a stacks array, each stack requires a unique key, and stack dependencies are handled through fields such as depends_on and stack_dependency_references. The missing capability is the ability to reference another template from within a template and provide its required inputs explicitly. For example, we may have reusable templates such as: create_network stacks: - key: network - key: firewall_rules create_vm stacks: - key: vm add_dns_record stacks: - key: dns_record Each of these templates may contain one or more stacks. These should be reusable in their own right, but they should also be available as building blocks inside larger templates. An illustrative parent template could look something like this: inputs: - id: environment name: Environment type: select options: - dev - test - prod - id: vm_name name: VM Name type: short_text - id: dns_zone name: DNS Zone type: short_text templates: - key: network template: create_network inputs: environment: ${{ inputs.environment }} name: ${{ inputs.vm_name }} - key: vm template: create_vm inputs: environment: ${{ inputs.environment }} name: ${{ inputs.vm_name }} network_id: ${{ templates.network.network.vpc_id }} firewall_group_id: ${{ templates.network.firewall_rules.group_id }} stacks: - key: bootstrap name: ${{ inputs.vm_name }}-bootstrap depends_on: - templates.vm.vm environment: stack_dependency_references: - name: VM_PRIVATE_IP from_stack: templates.vm.vm output: private_ip vcs: reference: value: main type: branch repository: bootstrap-repo provider: GITHUB vendor: terraform: manage_state: true version: "1.5.0" - key: dns_record name: ${{ inputs.vm_name }}-dns depends_on: - bootstrap environment: stack_dependency_references: - name: VM_PRIVATE_IP from_stack: templates.vm.vm output: private_ip - name: BOOTSTRAP_ID from_stack: bootstrap output: bootstrap_id vcs: reference: value: main type: branch repository: dns-repo provider: GITHUB vendor: terraform: manage_state: true version: "1.5.0" The exact YAML schema could differ, but the important point is that a parent template should be able to contain both: references to other templates local stack definitions A referenced template would need a unique key, a template reference, and an explicit input mapping. Those inputs could come from parent template inputs, static values, outputs from a specific stack inside another referenced template, or outputs from a local stack in the parent template. For example: network_id: ${{ templates.network.network.vpc_id }} would refer to the vpc_id output from the network stack inside the referenced network template. bootstrap_id: ${{ stacks.bootstrap.bootstrap_id }} or an equivalent syntax would refer to the bootstrap_id output from a local stack in the parent template. Likewise, dependency references may need to target a specific stack, not just a whole template. For example: depends_on: - tem
π‘ Feature Requests
about 1 month ago
Templates within Templates
We would like to request support for reusable template composition in Spacelift templates. The goal is to allow a Spacelift template to reference other templates as reusable building blocks, while still supporting local stack definitions in the same parent template. This would extend the existing template model rather than replace it. Today, templates already define user inputs and a stacks array, each stack requires a unique key, and stack dependencies are handled through fields such as depends_on and stack_dependency_references. The missing capability is the ability to reference another template from within a template and provide its required inputs explicitly. For example, we may have reusable templates such as: create_network stacks: - key: network - key: firewall_rules create_vm stacks: - key: vm add_dns_record stacks: - key: dns_record Each of these templates may contain one or more stacks. These should be reusable in their own right, but they should also be available as building blocks inside larger templates. An illustrative parent template could look something like this: inputs: - id: environment name: Environment type: select options: - dev - test - prod - id: vm_name name: VM Name type: short_text - id: dns_zone name: DNS Zone type: short_text templates: - key: network template: create_network inputs: environment: ${{ inputs.environment }} name: ${{ inputs.vm_name }} - key: vm template: create_vm inputs: environment: ${{ inputs.environment }} name: ${{ inputs.vm_name }} network_id: ${{ templates.network.network.vpc_id }} firewall_group_id: ${{ templates.network.firewall_rules.group_id }} stacks: - key: bootstrap name: ${{ inputs.vm_name }}-bootstrap depends_on: - templates.vm.vm environment: stack_dependency_references: - name: VM_PRIVATE_IP from_stack: templates.vm.vm output: private_ip vcs: reference: value: main type: branch repository: bootstrap-repo provider: GITHUB vendor: terraform: manage_state: true version: "1.5.0" - key: dns_record name: ${{ inputs.vm_name }}-dns depends_on: - bootstrap environment: stack_dependency_references: - name: VM_PRIVATE_IP from_stack: templates.vm.vm output: private_ip - name: BOOTSTRAP_ID from_stack: bootstrap output: bootstrap_id vcs: reference: value: main type: branch repository: dns-repo provider: GITHUB vendor: terraform: manage_state: true version: "1.5.0" The exact YAML schema could differ, but the important point is that a parent template should be able to contain both: references to other templates local stack definitions A referenced template would need a unique key, a template reference, and an explicit input mapping. Those inputs could come from parent template inputs, static values, outputs from a specific stack inside another referenced template, or outputs from a local stack in the parent template. For example: network_id: ${{ templates.network.network.vpc_id }} would refer to the vpc_id output from the network stack inside the referenced network template. bootstrap_id: ${{ stacks.bootstrap.bootstrap_id }} or an equivalent syntax would refer to the bootstrap_id output from a local stack in the parent template. Likewise, dependency references may need to target a specific stack, not just a whole template. For example: depends_on: - tem
π‘ Feature Requests
about 1 month ago
π Discovery
Deploying Templates To Multiple Spaces
I would like to deploy 1 Template to 3 different spaces (dev,stage,prod) but unfortunately in the YAML configuration βspaceβ is a top-level field which means it can only take 1 space at a time. If βspaceβ was under stacks then i could easily achieve this. I believe blueprints have the spaces under the stacks?? For Example: stacks: - key: dev name: dev space: dev-space - key: stage name: stage space: stage-space - key: prod name: prod space: prod-space
π‘ Feature Requests
about 1 month ago
π Discovery
Deploying Templates To Multiple Spaces
I would like to deploy 1 Template to 3 different spaces (dev,stage,prod) but unfortunately in the YAML configuration βspaceβ is a top-level field which means it can only take 1 space at a time. If βspaceβ was under stacks then i could easily achieve this. I believe blueprints have the spaces under the stacks?? For Example: stacks: - key: dev name: dev space: dev-space - key: stage name: stage space: stage-space - key: prod name: prod space: prod-space
π‘ Feature Requests
about 1 month ago
β¬οΈ Gathering votes
Allow custom or multiple OPA package names in Spacelift policies
Spacelift currently requires all policies to use the hardcoded package name βspaceliftβ. This request is to allow users to configure custom package names or support multiple packages per policy.
π‘ Feature Requests
about 2 months ago
β¬οΈ Gathering votes
Allow custom or multiple OPA package names in Spacelift policies
Spacelift currently requires all policies to use the hardcoded package name βspaceliftβ. This request is to allow users to configure custom package names or support multiple packages per policy.
π‘ Feature Requests
about 2 months ago
Add a last evaluated at field to the policy view
Right now when I click into policies I can see created at and last updated at. However a βlast evaluated atβ field would be helpful to understand what policies are inactive and can be cleaned up / to see what policies would have recent samples for troubleshooting.
π‘ Feature Requests
11 days ago
Add a last evaluated at field to the policy view
Right now when I click into policies I can see created at and last updated at. However a βlast evaluated atβ field would be helpful to understand what policies are inactive and can be cleaned up / to see what policies would have recent samples for troubleshooting.
π‘ Feature Requests
11 days ago
β¬οΈ Gathering votes
Access to Spacelift state backend
We would like Spacelift to support exposing its managed Terraform/OpenTofu HTTP state backend in a way that allows authorised users to run plan and apply locally against the same state backend used by Spacelift-managed stacks. The goal is to support a break-glass operational process where, in exceptional circumstances, we can run Terraform/OpenTofu locally while still using Spacelift as the source of truth for state and locking. Ideally, this would allow local Terraform/OpenTofu runs to: Use the Spacelift-managed state backend directly Respect Spacelift state locking Prevent concurrent Spacelift pipeline runs while local operations are in progress Avoid having to manually reconcile or βfold back inβ state changes made outside of Spacelift
π‘ Feature Requests
2 months ago
OpenTofu
β¬οΈ Gathering votes
Access to Spacelift state backend
We would like Spacelift to support exposing its managed Terraform/OpenTofu HTTP state backend in a way that allows authorised users to run plan and apply locally against the same state backend used by Spacelift-managed stacks. The goal is to support a break-glass operational process where, in exceptional circumstances, we can run Terraform/OpenTofu locally while still using Spacelift as the source of truth for state and locking. Ideally, this would allow local Terraform/OpenTofu runs to: Use the Spacelift-managed state backend directly Respect Spacelift state locking Prevent concurrent Spacelift pipeline runs while local operations are in progress Avoid having to manually reconcile or βfold back inβ state changes made outside of Spacelift
π‘ Feature Requests
2 months ago
OpenTofu
β¬οΈ Gathering votes
CloudFormation Changeset Workflow - EarlyValidation
Accelerate infrastructure development with CloudFormation pre-deployment validation and simplified troubleshooting | AWS DevOps & Developer Productivity Blog The above feature appears to be in use, as CloudFormation runs detected failures from the changeset worfklow: The following hook(s)/validation failed: [AWS::EarlyValidation::PropertyValidation]. To troubleshoot Early Validation errors, use the DescribeEvents API for detailed failure information. However, it would be more useful if Deployment Validation failures were displayed along with this using the DescribeEvents API as mentioned, so then the developers did not have to try to track these down in the AWS console.
π‘ Feature Requests
15 days ago
CloudFormation
β¬οΈ Gathering votes
CloudFormation Changeset Workflow - EarlyValidation
Accelerate infrastructure development with CloudFormation pre-deployment validation and simplified troubleshooting | AWS DevOps & Developer Productivity Blog The above feature appears to be in use, as CloudFormation runs detected failures from the changeset worfklow: The following hook(s)/validation failed: [AWS::EarlyValidation::PropertyValidation]. To troubleshoot Early Validation errors, use the DescribeEvents API for detailed failure information. However, it would be more useful if Deployment Validation failures were displayed along with this using the DescribeEvents API as mentioned, so then the developers did not have to try to track these down in the AWS console.
π‘ Feature Requests
15 days ago
CloudFormation
π Discovery
Auto-apply new stacks on creation
If a new stack is created an has auto-apply enabled, go ahead and trigger the apply based on the DAG. I donβt want to have to manually trigger each stack.
π‘ Feature Requests
about 1 month ago
π Discovery
Auto-apply new stacks on creation
If a new stack is created an has auto-apply enabled, go ahead and trigger the apply based on the DAG. I donβt want to have to manually trigger each stack.
π‘ Feature Requests
about 1 month ago
β‘οΈ Planned
Stack Views: ID-addressable permalink that resolves to the live view definition
Add a stable URL form for a saved Stack View that references the view by its identity (view ID or slug) rather than encoding the expanded filter/search/sort state in the query string. Loading the permalink should resolve to the view's current definition, so the link stays correct after the view's filters are edited. Example of the desired behaviour:.../stacks?view= (or a slug equivalent) loads whatever that view is currently defined as β instead of today's.../stacks?filterKeys=...&filterTypes=... which snapshots the filter state at copy time.
π‘ Feature Requests
19 days ago
β‘οΈ Planned
Stack Views: ID-addressable permalink that resolves to the live view definition
Add a stable URL form for a saved Stack View that references the view by its identity (view ID or slug) rather than encoding the expanded filter/search/sort state in the query string. Loading the permalink should resolve to the view's current definition, so the link stays correct after the view's filters are edited. Example of the desired behaviour:.../stacks?view= (or a slug equivalent) loads whatever that view is currently defined as β instead of today's.../stacks?filterKeys=...&filterTypes=... which snapshots the filter state at copy time.
π‘ Feature Requests
19 days ago
Git Commit Message in Environment Variables
Similar to how the SPACELIFT_COMMIT_BRANCH and SPACELIFT_COMMIT_SHA exist in the plugin execution environment as well as TF_VAR_spacelift_commit_branch / TF_VAR_spacelift_commit_sha, please add a SPACELIFT_COMMIT_MESSAGE / TF_VAR_spacelift_commit_message with the run.commit.message from the VCS webhook when available.
π‘ Feature Requests
about 1 month ago
VCS
Git Commit Message in Environment Variables
Similar to how the SPACELIFT_COMMIT_BRANCH and SPACELIFT_COMMIT_SHA exist in the plugin execution environment as well as TF_VAR_spacelift_commit_branch / TF_VAR_spacelift_commit_sha, please add a SPACELIFT_COMMIT_MESSAGE / TF_VAR_spacelift_commit_message with the run.commit.message from the VCS webhook when available.
π‘ Feature Requests
about 1 month ago
VCS
β¬οΈ Gathering votes
Provide individual subcommands in approval policy
In addition to run.command, have another input value that is a list of the βsubcommandsβ. Specifically if the command is something like βcommand1; commad2 -optionβ or βcommand1 && command2 -optionβ, then you would get [βcommand1β, βcommand2 -optionβ]. This would make it a lot simpler to ensure the commands are in an allowlist, while still allowing multiple commands to be run at once. Or alternatively, have a way to create a pipeline of multiple tasks to run in the same container, to avoid having to pay the cost of warming up a container for each command when you need to perform multilple tasks.
π‘ Feature Requests
23 days ago
Access Control
β¬οΈ Gathering votes
Provide individual subcommands in approval policy
In addition to run.command, have another input value that is a list of the βsubcommandsβ. Specifically if the command is something like βcommand1; commad2 -optionβ or βcommand1 && command2 -optionβ, then you would get [βcommand1β, βcommand2 -optionβ]. This would make it a lot simpler to ensure the commands are in an allowlist, while still allowing multiple commands to be run at once. Or alternatively, have a way to create a pipeline of multiple tasks to run in the same container, to avoid having to pay the cost of warming up a container for each command when you need to perform multilple tasks.
π‘ Feature Requests
23 days ago
Access Control
π Discovery
Support Strict Read-Only Operation Mode on Spacelift/Spacectl MCP
Support read-only operation mode in order to support strict safety/security boundaries around the use of the Spacelift MCP.
π‘ Feature Requests
3 months ago
Access Control
π Discovery
Support Strict Read-Only Operation Mode on Spacelift/Spacectl MCP
Support read-only operation mode in order to support strict safety/security boundaries around the use of the Spacelift MCP.
π‘ Feature Requests
3 months ago
Access Control