`overrideFeatureInstallOrder` gets confused when higher-priority features have dependencies

Open
#1,200 1 comment 1 reaction 1 assignee View on GitHub

@v-Kaniska244 is already working on this.

Since Apr 20, 2026.

Assessment

This issue has not been assessed yet.

Description

I wanted to install features in a specific order, and used overrideFeatureInstallOrder to do that. I was surprised when the feature I wanted to install last installed first!

I have a minimal reproduction at https://github.com/dgholz/devcontainer-install-override

In the devcontainer.json file, I have:

{
    "image": "mcr.microsoft.com/devcontainers/base:trixie",
    "features": {
        "./features/use-tr": {},
        "./features/remove-tr": {}
    },
    "overrideFeatureInstallOrder": [
      "./features/use-tr",
      "./features/remove-tr"
    ]
}

But use-tr has a dependency on the common feature, and remove-tr does not. So when computeDependsOnInstallationOrder runs, it gets tripped up by
https://github.com/devcontainers/cli/blob/997a2db1ec28eacfb718d07e7741dbd57af59564/src/spec-configuration/containerFeaturesOrder.ts#L625
use-tr gets excluded, and remove-tr has round priority 1 so gets installed before common (which has round priority 0)

The fix is to either set the round priority transitively (so common would get round priority 2 from use-tr); or to reverse the calculated priority ordering, so features with no dependencies would be installed first.

Dominant language
TypeScript
Stars
3k
Forks
461
Avg merge
13h 17m
Merged PRs (30d)
6

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from devcontainers/cli

All issues in devcontainers/cli

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.