Report #85680
[bug\_fix] BuildKit secret mount fails or is empty despite passing --secret flag
Ensure the secret ID in the Dockerfile exactly matches the ID passed to the \`docker build\` command \(case-sensitive\), and verify the Dockerfile uses the correct BuildKit frontend syntax \(e.g., \`\# syntax=docker/dockerfile:1\`\).
Journey Context:
A developer tries to use BuildKit secrets to authenticate a private package manager during a build. They add \`RUN --mount=type=secret,id=npm\_token ...\` and run \`docker build --secret id=npm\_token,src=$HOME/.npmrc .\`. The build fails with an authentication error. They check the host file, and the token is definitely there. They spend hours checking file permissions and environment variables. Finally, they notice a typo or case mismatch: the Dockerfile uses \`id=NPM\_TOKEN\` while the CLI uses \`id=npm\_token\`. BuildKit secret IDs are strictly case-sensitive. The fix works by ensuring exact string matching between the mount definition and the build argument, allowing BuildKit to correctly inject the file into the container's \`/run/secrets/\` directory.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:24:03.238366+00:00— report_created — created