Skip to content

feat(skills): probe sandbox for skill eligibility#29327

Closed
openperf wants to merge 2 commits into
openclaw:mainfrom
openperf:fix/sandbox-skill-eligibility-29254
Closed

feat(skills): probe sandbox for skill eligibility#29327
openperf wants to merge 2 commits into
openclaw:mainfrom
openperf:fix/sandbox-skill-eligibility-29254

Conversation

@openperf

@openperf openperf commented Feb 28, 2026

Copy link
Copy Markdown
Member

Summary

When the gateway runs inside a Docker container (the default self-hosted topology), skill eligibility checks for requires.bins, requires.anyBins, and os are evaluated on the gateway host rather than inside the sandbox container where the skill actually executes. This causes skills like coding-agent (which requires gh) to be silently dropped from the system prompt even though gh is available in the sandbox image.

This PR adds a sandbox bin-probing layer — mirroring the existing remote-node pattern — so that the sandbox container/image is queried for available binaries and its platform is included in OS eligibility checks.

Changes

File Change
src/infra/skills-sandbox.ts New — sandbox bin probing via docker exec / docker run, with caching and generation counter
src/gateway/server.impl.ts Wire refreshSandboxBinsCache into gateway startup, skills change, and config hot-reload
src/agents/skills/types.ts Add sandbox field to SkillEligibilityContext
src/shared/config-eval.ts Add hasSandboxBin / hasAnySandboxBin / sandboxPlatforms to eligibility evaluation
src/agents/skills/config.ts Wire sandbox eligibility into shouldIncludeSkill
src/agents/skills/refresh.ts Add "sandbox" to SkillsChangeEvent.reason enum
src/commands/agent.ts Pass sandbox eligibility, gated by session sandbox status
src/auto-reply/reply/commands-system-prompt.ts Pass sandbox eligibility, gated by session sandbox status
src/auto-reply/reply/session-updates.ts Pass sandbox eligibility, gated by session sandbox status
src/auto-reply/reply/get-reply-directives.ts Pass sessionKey for sandbox status resolution
src/auto-reply/reply/get-reply-inline-actions.ts Pass sessionKey for sandbox status resolution
src/auto-reply/skill-commands.ts Pass sandbox eligibility, gated by session sandbox status
src/commands/status-all.ts Pass sandbox eligibility
src/cron/isolated-agent/skills-snapshot.ts Pass sandbox eligibility, gated by session sandbox status
src/cron/isolated-agent/run.ts Pass sessionKey for sandbox status resolution
src/gateway/server-methods/skills.ts Pass sandbox eligibility
src/shared/config-eval.test.ts Add 8 new test cases covering sandbox platform and bin checks
src/cron/isolated-agent/run.skill-filter.test.ts Add mocks for agents/sandbox.js and infra/skills-sandbox.js

How it works

  1. skills-sandbox.ts collects all requires.bins / requires.anyBins from workspace skills.
  2. It discovers a running sandbox container by matching the configured containerPrefix and verifying the container's image to avoid probing stale or incorrect containers.
  3. It probes the sandbox by first trying docker exec on a running container, then falling back to docker run --rm against the configured image.
  4. The probed binary set is cached and exposed via getSandboxSkillEligibility(). A generation counter prevents race conditions from concurrent refreshes. The cache distinguishes null (not yet probed) from empty set (probed, nothing found) so that OS-only skills are not incorrectly filtered.
  5. evaluateRuntimeEligibility now checks sandbox bins between local and remote, and includes the sandbox platform in OS matching.
  6. All call sites conditionally inject sandbox eligibility only when the session is actually sandboxed (sandboxRuntime.sandboxed), preventing skills from being advertised in non-sandboxed sessions.

Testing

8 new test cases in config-eval.test.ts covering:

  • Sandbox platform satisfying OS requirements
  • Sandbox bin fallback for requires.bins and requires.anyBins
  • Correct priority order: local → sandbox → remote
  • Rejection when all three sources miss

Sandbox mocks added to run.skill-filter.test.ts to ensure CI passes.

Fixes #29254

Checklist

@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime commands Command implementations agents Agent runtime and tooling size: M labels Feb 28, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 62d695cc3b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/infra/skills-sandbox.ts
Comment thread src/infra/skills-sandbox.ts Outdated
@greptile-apps

greptile-apps Bot commented Feb 28, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR introduces a sandbox bin-probing layer so that skill eligibility checks for requires.bins, requires.anyBins, and os are evaluated against the Docker sandbox container/image rather than the gateway host. The new skills-sandbox.ts module mirrors the existing remote-node pattern: it probes the configured sandbox image for available binaries, caches the result, and exposes it via getSandboxSkillEligibility(). All call sites that previously only threaded remote eligibility now also pass sandbox eligibility.

Key findings:

  • Logic bug in getSandboxSkillEligibility() — the guard !cachedBins || cachedBins.size === 0 returns undefined when the cache has been populated but is empty (either because no skills declare any requires.bins, or because all probes found nothing). This discards the sandbox's "linux" platform entirely, so a skill specifying only os: ["linux"] with no binary requirements is still excluded on a macOS/Windows gateway despite a Linux sandbox being configured. The guard should be cachedBins === null ("not yet probed") rather than also gating on size.
  • containerName fast-path is dead codeprobeSandboxBins accepts an optional containerName to attempt a cheaper docker exec against a running container, but refreshSandboxBinsCache never resolves or passes the container name. Every probe therefore spins up a throwaway container via docker run --rm. The parameter should either be wired in or removed.
  • The evaluateRuntimeRequires / evaluateRuntimeEligibility changes in config-eval.ts are clean and well-tested.
  • Note: per a previous review thread, refreshSandboxBinsCache is exported but is not yet called from gateway startup or on skills change, meaning the cache is never populated in production. That wiring is a prerequisite for the entire feature to function.

Confidence Score: 2/5

  • Not safe to merge — the sandbox platform is silently dropped for OS-only skill constraints, and the cache is never populated at runtime.
  • Two correctness issues need to be resolved before the feature works as intended: the cachedBins.size === 0 guard in getSandboxSkillEligibility() defeats OS-only eligibility for the sandbox, and (per a prior thread) refreshSandboxBinsCache is never invoked so the cache stays null in production. The underlying eval logic and tests are solid, but the feature is effectively a no-op until both issues are addressed.
  • src/infra/skills-sandbox.ts requires the most attention — specifically the getSandboxSkillEligibility return guard and the missing refreshSandboxBinsCache call-site wiring.

Last reviewed commit: 4a0b36b

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

12 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment thread src/infra/skills-sandbox.ts
@openperf openperf closed this Feb 28, 2026
@openperf openperf reopened this Feb 28, 2026
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 62d695c to 4a0b36b Compare February 28, 2026 02:39
Comment thread src/infra/skills-sandbox.ts
Comment thread src/infra/skills-sandbox.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a0b36b1ff

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/infra/skills-sandbox.ts Outdated
Comment thread src/gateway/server.impl.ts
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 4a0b36b to 62c4b99 Compare February 28, 2026 02:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 62c4b99f4b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/gateway/server.impl.ts
Comment thread src/infra/skills-sandbox.ts
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 62c4b99 to 5bdc4a2 Compare February 28, 2026 03:20

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5bdc4a2005

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/infra/skills-sandbox.ts
Comment thread src/infra/skills-sandbox.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 5bdc4a2 to 0960618 Compare February 28, 2026 04:45

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db14888076

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/gateway/server.impl.ts
Comment thread src/infra/skills-sandbox.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from db14888 to a2487e1 Compare February 28, 2026 05:36

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a2487e1834

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/auto-reply/reply/session-updates.ts
Comment thread src/infra/skills-sandbox.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from a2487e1 to 5ddb837 Compare February 28, 2026 05:55

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5ddb837007

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/auto-reply/reply/commands-system-prompt.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 5ddb837 to e354a45 Compare February 28, 2026 07:41

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e354a45759

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/infra/skills-sandbox.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from e354a45 to 536713d Compare February 28, 2026 08:17

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 536713dd9e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/shared/config-eval.ts
Comment thread src/commands/agent.ts
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 536713d to 36e3cfd Compare February 28, 2026 08:34

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 36e3cfd315

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/cron/isolated-agent/skills-snapshot.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 36e3cfd to 4a74a90 Compare February 28, 2026 08:51

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a74a9046f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/auto-reply/skill-commands.ts Outdated
Comment thread src/infra/skills-sandbox.ts
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 4a74a90 to ca7ee9c Compare February 28, 2026 09:14

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca7ee9c70f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/commands/agent.ts
Comment thread src/infra/skills-sandbox.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from ca7ee9c to 07dc406 Compare February 28, 2026 09:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 07dc406968

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/auto-reply/skill-commands.ts Outdated
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 07dc406 to da45919 Compare February 28, 2026 09:47

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: da45919498

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/auto-reply/reply/commands-system-prompt.ts Outdated
Comment thread src/infra/skills-sandbox.ts
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from da45919 to 926efae Compare February 28, 2026 12:28
@openperf
openperf force-pushed the fix/sandbox-skill-eligibility-29254 branch from 926efae to f441706 Compare February 28, 2026 13:11
@openperf

openperf commented Feb 28, 2026

Copy link
Copy Markdown
Member Author

Thank you @chatgpt-codex-connector and @greptile-apps for the thorough multi-round reviews. Here is a summary of all fixes incorporated based on your feedback, as of the latest commit f441706:

Fixes from review feedback

  1. Cache refresh wired into lifecyclerefreshSandboxBinsCache is now called at gateway startup, on skills/config file changes, and on config hot-reload (server.impl.ts). This was the critical missing piece that prevented the entire feature from working.
  2. Correct null vs empty-set sentinelgetSandboxSkillEligibility() now uses cachedBins === null (not probed yet) instead of cachedBins.size === 0 (probed, nothing found), so OS-only skills like os: ["linux"] are correctly included when the sandbox is running.
  3. Session-aware eligibility injection — All call sites now gate sandbox eligibility behind sandboxRuntime.sandboxed, preventing sandbox-only skills from being advertised in non-sandboxed sessions (e.g., main session under mode: "non-main").
  4. Container image verificationresolveRunningContainerName now accepts an expectedImage parameter and skips containers whose image does not match, preventing probing of stale or unrelated containers.
  5. Concurrency guard — Added a refreshGeneration counter to prevent race conditions where a slow, stale refresh overwrites a newer result.
  6. Correct session key for sandbox status — Fixed commands-system-prompt.ts to use params.sessionKey (target session) instead of params.ctx.SessionKey (source session) when resolving sandbox runtime status.
  7. CI test fixes — Added mocks for agents/sandbox.js and infra/skills-sandbox.js in run.skill-filter.test.ts to resolve all 10 test failures.

Known limitations (deferred to follow-up)

  • Per-agent sandbox image overrides share a single global cache.
  • openclaw agent --local CLI path does not trigger cache refresh.
  • Sandbox container creation via docker.setupCommand does not trigger a cache refresh.

I've also updated the PR description to reflect the full scope of changes (18 files) and the robustness improvements made during review.

@chatgpt-codex-connector

Copy link
Copy Markdown
Contributor

To use Codex here, create a Codex account and connect to github.

@greptile-apps

greptile-apps Bot commented Feb 28, 2026

Copy link
Copy Markdown
Contributor

Your summary is spot-on. I've verified all the key fixes in commit f441706:

✓ Core functionality enabled - refreshSandboxBinsCache is correctly called on:

  • Startup: server.impl.ts:644
  • Skills/config changes: server.impl.ts:651-664 (debounced)
  • Hot-reload: server.impl.ts:872

✓ Correct eligibility logic - The cachedBins === null check in getSandboxSkillEligibility() properly distinguishes "not probed" from "probed but empty", ensuring OS-only skills work correctly.

✓ Session-aware eligibility - Both skill-commands.ts:33 and commands-system-prompt.ts:32 correctly gate sandbox eligibility with sandboxRuntime.sandboxed.

✓ Robust container matching - resolveRunningContainerName() at skills-sandbox.ts:146-149 verifies the container image matches before probing.

✓ Concurrency safety - The generation counter pattern prevents stale refreshes from overwriting newer results.

✓ Correct session context - commands-system-prompt.ts:28-31 uses the correct params.sessionKey.

✓ CI test mocks - Proper stubs added for skills-sandbox.js, skills-remote.js, and sandbox.js.

This is solid work. The feature is now properly gated, session-aware, and resilient to edge cases.

@tony-shi

tony-shi commented Mar 2, 2026

Copy link
Copy Markdown

Great work on the sandbox eligibility probing — this is a much-needed improvement for sandbox-enabled deployments.

I wanted to flag a related but orthogonal issue in the existing parseBinProbePayload() function that affects non-sandbox remote nodes (e.g. Docker gateway with a Mac host connected via openclaw node run).

The parsing bug: system.which returns a Record<string, string> ({ "git": "/usr/bin/git", ... }), but parseBinProbePayload only handles string[] and raw stdout formats. Array.isArray() evaluates to false for plain objects, so the Record-typed response is never parsed — the function returns [], and all remote-bin-dependent skills are incorrectly gated as blocked.

I have a fix in #28406 that adds Object.keys() extraction for the Record format, along with unit tests covering all three response shapes. The change is minimal and scoped entirely to the parsing layer — it should not conflict with the sandbox probing logic introduced here.

Since this parsing bug exists independently of sandbox configuration, would it make sense to land #28406 separately, or would you prefer to incorporate the Record-format handling into this PR?

@steipete

steipete commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Thanks for the PR! Multiple PRs address issue #29254. Keeping #29303 as the earliest submission. Closing to reduce noise. This is an AI-assisted triage review. If we got this wrong, feel free to reopen — happy to revisit.

@steipete steipete closed this Mar 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling commands Command implementations gateway Gateway runtime size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Skill eligibility checks run on gateway host, not sandbox container — skills blocked despite binaries existing in sandbox`

3 participants