Files
coder/docs/admin
Ben PotterandNick Vigilante 3bdd395faa docs(docs/admin/templates/extending-templates): clarify coder_env merge_strategy does not include host environment (#28466)
`merge_strategy` on `coder_env` only combines values across `coder_env`
resources targeting the same name. It does not know about the value
already set by the workspace's image or host, such as the base `PATH`. A
user hit this in #27501: appending to `PATH` with three `coder_env`
resources replaced the host's `PATH` entirely, since none of them
referenced the existing value.

Clarify this in the docs, and update the `PATH` example to show
referencing `$PATH` in one of the resources so the host's original value
is kept.

Refs #27501

<details>
<summary>Investigation notes</summary>

- `coderd/provisionerdserver/provisionerdserver.go` builds the merged
env starting from an empty map (`MergeExtraEnvs`), only combining
`coder_env` resources with each other.
- `agent/agent.go`'s `updateCommandEnv` applies the result with
`os.ExpandEnv(v)`, which expands `$VARNAME` against the agent's real
process environment.
- Confirmed with a standalone repro that `value =
"$PATH:/usr/local/cuda/bin"` preserves the host's real `PATH` and
appends the extra directory, and that this composes correctly across
multiple `coder_env` resources with `merge_strategy = "append"` as long
as one of them references `$PATH`.
- A companion PR updates the `terraform-provider-coder` schema
description and example that feed the registry docs:
https://github.com/coder/terraform-provider-coder (branch
`bpmct/docs-env-merge-host`).

</details>

---
*Opened by Coder Agents on behalf of @bpmct.*

---------

Co-authored-by: Nick Vigilante <nickvigilante@users.noreply.github.com>
2026-08-24 07:55:23 -05:00
..