Appearance
Why It Matters
Forcing Docker to refresh from the registry at runtime weakens reproducibility even when the image name itself looks reviewed. In committed MCP config, --pull always turns the launch path back into a mutable registry fetch.
What Triggers
SEC346 applies to committed MCP config Docker launch paths and triggers on explicit:
--pull=always--pull always
forms in docker run command arguments.
Examples that trigger:
json
{"command":"docker","args":["run","--pull","always","ghcr.io/acme/server@sha256:..."]}
{"command":"docker","args":["run","--pull=always","ghcr.io/acme/server:1.2.3"]}Example that stays clean:
json
{"command":"docker","args":["run","ghcr.io/acme/server@sha256:0123456789abcdef"]}False Positives
The rule is structural and only looks for explicit forced-pull policies in actual MCP Docker launch paths. It does not treat every mutable image reference as the same class of finding.
Remediation
Remove the forced Docker pull policy from the committed config and prefer pinned, reproducible image references.