Safeguard
Developer Tools•

Helm template or install dry run: which one checks more?

Helm template renders locally. Install with dry run set to server also asks the cluster. Know which to use for policy checks, and how to hide Secrets.

Safeguard Security Team
3 min read

Helm template renders a chart locally and does no server side testing. Helm install with the dry run option set to server simulates the install against the cluster, so API and admission checks apply. Use template for fast policy checks on rendered YAML, and server dry run for the cluster's own verdict.

The three modes

The helm install reference describes the dry run option as taking one of three values:

ValueBehaviour
noneExecutes normally and persists changes
clientSimulates client side only and avoids cluster connections
serverSimulates on the server and requires cluster connectivity

Helm template is a separate command. Its reference says it renders templates locally, that values normally looked up in cluster are faked, and that none of the server side testing of chart validity, such as whether an API is supported, is done.

What each is good for

TaskBest tool
Feed rendered YAML to a policy engine in CIhelm template
Check the chart works with this cluster's APIshelm install with dry run set to server
See what Kubernetes admission policies would sayhelm install with dry run set to server
Run with no cluster credentialshelm template, or dry run set to client

The security angle is admission. Policies enforced by the cluster only run when a request reaches the API server. A local render cannot tell you a policy would reject it.

The Secrets warning

Helm's reference warns that the dry run flag outputs all generated chart manifests, including Secrets which can contain sensitive values. To hide Kubernetes Secrets, use the hide secret flag. It also says to consider carefully how and when these flags are used.

In CI this matters because logs are often readable by a wide group. Two habits help:

  1. Pass the hide secret flag whenever you combine debug and dry run in a shared pipeline.
  2. Do not print rendered manifests to the build log when they could contain credentials. Write them to a protected artifact instead.

A suggested order

  1. Render with helm template and run policy checks on the output.
  2. Run a server dry run on a test cluster with the hide secret flag.
  3. Review the diff against what is live.
  4. Install.

Try it yourself

Click through it at your own pace, or open it full screen.

See how checks stack before a merge. Rendering, policy and dry run are stages of the same gate.

Quick check

Does helm template contact the cluster?

No. It renders locally and fakes values that would be looked up in cluster.

Can a dry run leak secrets into logs?

Yes. It outputs all generated manifests, including Secrets. Use the hide secret flag, or keep the output out of shared logs.

Safeguard runs policies and gates on pull requests, so a failed rule can hold a merge, and its dependency and SBOM scanning covers the packages your infrastructure code pulls in. You can try a free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.