v0.1.7
New
-
Customer-controlled env-var access policy (#86, #87, #88, #89). niro now gates every host env-var read against a
security.env.access:allowlist in yourniro.yaml. Reads are audited inniro-security.jsonlwithenv_resolved/env_blocked/env_not_setrecords; the variable's value is never logged.Action required for existing projects: add the env vars niro needs to
security.env.access. The common starter set:security: env: access: - GH_TOKEN - GITHUB_TOKEN - ANTHROPIC_API_KEY - COPILOT_PROVIDER_TYPE - COPILOT_PROVIDER_BASE_URL - COPILOT_PROVIDER_API_KEY
Without this, Copilot BYOK reads return
env_blockedand silently fall back to OAuth. niro surfaces a warn-tierenv_access_underspecifiedconcern atstart_pentestlisting the exact names you need to add — your coding agent will show it to you. -
headless: boolin niro.yaml (#87). Promoted fromNIRO_HEADLESSenv. CI/automation workflows now set it once per project rather than per-shell. -
version: intin niro.yaml (#89). Schema versioning so future breaking changes have a clean upgrade signal. Default1; absent is treated as1(no migration needed today). -
CI grep guard banning direct
os.Getenvoutsidepkg/env(#89). Production code reads host env vars only through the audited entry point; marker-based exemptions for OS-runtime (PATH,APPDATA,NO_COLOR) and dev escape hatches (NIRO_BUILD_CONTEXT,NIRO_IMAGE_REGISTRY).
Fixed
-
Windows host paths in container bind mounts (#83). Switched from
-v src:tgtto--mount type=bind,source=…,target=…so drive letters (C:\Users\…) survive argv parsing. Includes a deterministic regression test that parses the value back withencoding/csv(Docker's actual parser). -
resolveForgenow reads niro.yaml from the host path (#90). Previously usedagentlayout.Default().ProjectYAMLPath()=/niro/config/niro.yaml, which is the in-container path and never exists on the host. Anyforge.kindset by the customer was silently ignored. -
Sentinel file race on Windows (closed in #83). niro-agent now writes the sentinel before the registry's terminal transition, eliminating the
WritesSentinelOnCompleteflake surfaced under Windows scheduling.
CI
-
Windows build-test job added and required for merge (#83). Branch protection on
maingates onBuild + unit tests (Windows)alongside the Linux jobs. -
Linux jobs renamed
(Linux)for platform parity (#84). -
Integration tests stay Linux-only — GHA Windows runners don't ship Linux container support.
Internal
pkg/env(was: agent container layout — paths, uids, ports) renamed topkg/agentlayout(#85). Thepkg/envname now belongs to the env-access policy package.
Migration checklist
- Update
niro.yamlto add asecurity.env.access:block with the env vars your workflows depend on (see above). - Optional: add
version: 1at the top ofniro.yaml. Absent is treated as1so this isn't required today. - If you used
NIRO_HEADLESS=1, move toheadless: trueinniro.yamlfor consistency (env var still works).