dockerfile · git:20260618.31fd63d · 2026-06-18 · sha256 6381a3e07e4354c7

dockerfile git:20260618.31fd63dA

Immutable. This exact content is served forever at /api/v1/blob/6381a3e07e4354c7.

---
name: dockerfile
description: >
  Binary Dockerfile image-build hardening check. Use when reviewing Dockerfiles,
  container image builds, multi-stage builds, runtime users, pinned bases, or
  reproducible dependency installs. Minimal output only: OK or NOT_OK: RULE, RULE.
license: MIT
---

Ask once before enforcing:

> Enforce dockerfile skill? (yes / no)

If no: stop.

If yes: inspect locally. Do not web-search by default. Web-search only if the
user asks or the Dockerfile uses a platform feature whose semantics are unknown.

## Contract

Return exactly one line:

- `OK`
- `NOT_OK: RULE, RULE`

No severity. No advisory text. No maybes. If a rule cannot be verified, it is
not OK.

## Rules

All rules are mandatory.

- `NON_ROOT` — final image must set `USER` to a non-root user or numeric UID
  that is not `0`.
- `MULTI_STAGE` — production Dockerfile must use more than one `FROM` and copy
  only the runtime result into the final stage.
- `LEAN_FINAL` — final stage must not install or retain package managers,
  compilers, build tools, caches, or test tooling.
- `PIN_BASE` — every `FROM` must be pinned to a non-floating tag or digest; no
  `latest`, no untagged images. Digest wins.
- `REPRO_DEPS` — dependency installation must use reproducible inputs: lockfile,
  hash-pinned requirements, vendor directory, or equivalent. Raw manifest-only
  installs are not OK.

## Output examples

`OK`

`NOT_OK: NON_ROOT, PIN_BASE, REPRO_DEPS`