Skip to content

bug: sandbox from community base image stays ConfigurationInvalid; image policy uses removed tls: terminate #4467

Open

Description

@politerealism

User Story

As a user creating a sandbox with --from base, I want the sandbox to reach Ready or tell me exactly which part of its policy is invalid, so that I can fix it without reading supervisor source.

Problem Statement

On v0.1.3, openshell sandbox create --from base never reaches Ready when no --policy is passed. The sandbox sits in ConfigurationInvalid and the supervisor logs Image policy is invalid; replace the sandbox policy to repair configuration on every pass.

The published ghcr.io/nvidia/openshell-community/sandboxes/base:latest image (built 2026-05-29) ships /etc/openshell/policy.yaml with tls: terminate on the claude_code endpoint. #3414 made that value a hard error, and that change is in v0.1.0 and every later release. Parsing the same file with the CLI (--policy <file>) gives:

network policy 'claude_code': endpoint 0: unknown tls value 'terminate';
omit the field to keep automatic TLS termination

Before #3414 this was only a deprecation warning (#3310), so older releases work with this image.

The error a user sees does not carry that message. openshell sandbox get reports only Effective configuration could not be activated; replace the policy or repair attached providers. The only trace of the cause is the Image policy is invalid line in the sandbox log, with no field or reason.

Impact / Why This Matters

Any --from base sandbox without an explicit policy fails on a current release, including the harness in #3314. The workaround is to pass a --policy file, which you only find out by reading the supervisor code or trying the image's policy through the CLI. The generic message gives no hint that the image's baked-in policy is the problem, so it is easy to read as a gateway or provider fault.

Acceptance Criteria

  • A sandbox created from the published base image either reaches Ready on a current release, or the image is no longer referenced as a working example.
  • When an image-supplied policy fails to parse, the parse error (including the failing field and reason) is visible in openshell sandbox get or openshell logs, not only the generic message.
  • Release notes or docs say that image-baked policies using removed values (such as tls: terminate) are rejected.

Reproduction Steps

  1. Install the v0.1.3 RPMs and start the gateway with the Podman driver.
  2. Run openshell sandbox create --name cfg-inv-test --from base --no-auto-providers --no-keep -- true.
  3. Run openshell sandbox get cfg-inv-test. The condition is ConfigurationInvalid and the sandbox stays in Provisioning.
  4. Run openshell logs cfg-inv-test. It shows Image policy is invalid, followed by repeated Server returned no policy; attempting local discovery.
  5. Extract /etc/openshell/policy.yaml from the image and pass it with --policy. The CLI prints the unknown tls value 'terminate' error above.
  6. Create the sandbox again with a minimal --policy file (filesystem and Landlock only). It reaches Ready.

Environment

  • OpenShell: v0.1.3 (RPM), gateway and CLI
  • OS: Fedora 44, x86_64
  • Runtime: rootless Podman 5.8.4
  • Image: ghcr.io/nvidia/openshell-community/sandboxes/base:latest, digest sha256:aeef1c63f00e2913ea002ccb3aaf925f338b5c5d70e63576f0d95c16a138044e

I only tested the Podman driver. The failure happens in the supervisor's policy discovery before any driver-specific step, so other drivers that use this image are likely affected too.

Logs

CONFIG:CONFIGURATION_ERROR [HIGH] Image policy is invalid; replace the sandbox policy to repair configuration
Server returned no policy; attempting local discovery

Activity

  1. houman44 commented on Oct 21, 2026

    @houman44

    Same on v0.1.5 (Homebrew, Docker driver, macOS arm64), with base:latest pulled today. The image's /etc/openshell/policy.yaml is byte-identical to sandboxes/base/policy.yaml on OpenShell-Community main (last changed 8f7d0daaa, 2026-04-03), so a rebuilt image would not fix it; the policy file itself needs the change.

    Two more things I hit on the way to running Claude Code from this image:

    1. After removing the three tls: terminate lines, attaching a claude-code provider (the profile from providers/claude-code.yaml at v0.1.5) is refused at create: credentialed endpoint 'statsig.anthropic.com:443' in rule 'claude_code' uses L4-only; configure L7 inspection or explicitly set allow_uninspected_credentials: true. The image's claude_code rule lists statsig.anthropic.com and sentry.io without protocol: rest, while the profile binds the credential to them. So the fix to the image policy probably needs both changes before --from base --provider <claude-code> -- claude works.

    2. While the sandbox sat in ConfigurationInvalid, nothing said there was a deadline. After 300 s it moved to Error (ProvisioningTimedOut: Provisioning repair window expired after 300 seconds). Running openshell policy set <name> --policy <fixed file> afterwards printed Policy unchanged (version 1, hash: …) and did not recover it. Recreating with --policy did.

  2. houman44 commented on Oct 21, 2026

    @houman44

    Since posting this I've seen that OpenShell-Community was archived on 23 September and its base image is no longer supported, so the policy-file change I suggested won't happen there; anyone still using that image with a current release will hit this rejection.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    state:triage-neededOpened without agent diagnostics and needs triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions