github apxlabs-ai/niro v0.1.7

latest releases: v0.1.81-dev.1, v0.1.80, v0.1.79...
3 months ago

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 your niro.yaml. Reads are audited in niro-security.jsonl with env_resolved / env_blocked / env_not_set records; 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_blocked and silently fall back to OAuth. niro surfaces a warn-tier env_access_underspecified concern at start_pentest listing the exact names you need to add — your coding agent will show it to you.

  • headless: bool in niro.yaml (#87). Promoted from NIRO_HEADLESS env. CI/automation workflows now set it once per project rather than per-shell.

  • version: int in niro.yaml (#89). Schema versioning so future breaking changes have a clean upgrade signal. Default 1; absent is treated as 1 (no migration needed today).

  • CI grep guard banning direct os.Getenv outside pkg/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:tgt to --mount type=bind,source=…,target=… so drive letters (C:\Users\…) survive argv parsing. Includes a deterministic regression test that parses the value back with encoding/csv (Docker's actual parser).

  • resolveForge now reads niro.yaml from the host path (#90). Previously used agentlayout.Default().ProjectYAMLPath() = /niro/config/niro.yaml, which is the in-container path and never exists on the host. Any forge.kind set 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 WritesSentinelOnComplete flake surfaced under Windows scheduling.

CI

  • Windows build-test job added and required for merge (#83). Branch protection on main gates on Build + 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 to pkg/agentlayout (#85). The pkg/env name now belongs to the env-access policy package.

Migration checklist

  1. Update niro.yaml to add a security.env.access: block with the env vars your workflows depend on (see above).
  2. Optional: add version: 1 at the top of niro.yaml. Absent is treated as 1 so this isn't required today.
  3. If you used NIRO_HEADLESS=1, move to headless: true in niro.yaml for consistency (env var still works).

Don't miss a new niro release

NewReleases is sending notifications on new releases.