Troubleshooting Stack Dependencies Missing Output Issues

Last updated: August 4, 2026

When working with stack dependencies in Spacelift, you may encounter issues with missing inputs or outputs. This article will guide you through troubleshooting these problems and ensuring your stack dependencies work correctly.

Missing Inputs Error

If you encounter an error message similar to:

job assignment failed: the following inputs are missing: Storage.TF_VAR_AWS_S3_BUCKET_ARN => TF_VAR_AWS_S3_BUCKET_ARN

This could be due to several reasons:

  • The source stack's run that created these outputs was unsuccessful

  • The output variable is not correctly defined or referenced

  • The state / outputs were imported without an apply phase

  • The outputs were created before we enabled the output uploading to our backend on 21 August 2023

  • The dependency reference was changed to a new upstream stack, but the new upstream stack has not yet completed a tracked run with an Apply phase to upload the current outputs for references

Troubleshooting Steps

  1. Verify successful runs: Ensure that the source stack (the one producing the output) has had a successful run recently.

  2. Check output definitions: Verify that the output variable is correctly defined in the source stack and properly referenced in the dependent stack.

  3. Confirm the dependency points to the intended stack: If you recently changed a dependency, double-check that the dependent stack is wired to the new upstream stack and not still pointing to the previous one.

  4. Imported state files: If you imported a state file with pre-existing outputs, make sure to run an apply phase. Spacelift uploads outputs during the Apply phase.

Preferred option: Trigger with force apply

If a dependent stack reports missing inputs or appears to use stale output reference values after you changed a dependency, trigger a force apply on the upstream stack that now provides the output. If you want dependent stacks to pick up the refreshed values immediately, use Cascade to dependents.

Make sure the upstream stack has completed a successful tracked run with an Apply phase. Spacelift registers stack outputs during the apply phase, so outputs that exist in state may not be available for dependency references until the upstream stack has applied successfully.

Also verify that the dependency reference is wired to the intended new upstream stack and not still pointing to the previous dependency.

Workaround

If triggering with force apply does not refresh the outputs, you can force the stack to upload outputs by modifying the name of an existing output or adding a dummy output to the stack and removing it afterwards:

output "dummy" {
  value = "dummy"
}

Best Practices

  • Always ensure that stacks with shared outputs have had successful runs with apply phases.

  • When importing state files, remember an apply phase is needed to properly upload outputs, even if they are visible in the UI.

  • After changing a dependency to a new upstream stack, run a force apply on the new upstream stack and cascade to dependents if the downstream stacks should immediately receive the refreshed values.

  • Double-check that output and input variable names match exactly between dependent stacks.

If you continue to experience issues after following these steps, please contact Spacelift support for further assistance.