NVIDIA / NVIDIA/NemoClaw

[All Platforms][Agent&Skills] DeepAgents connect probe accepts multiline launcher output instead of failing closed

Open
#11,514 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
22.5k
Forks
3.1k
Avg merge
1d 43m
Merged PRs (30d)
718

Description

## Description

The DeepAgents `connect` inference-route health probe trusts multiline output from the managed launcher script (`/usr/local/bin/nemoclaw-start`) instead of rejecting it as untrusted. Prepending an extra `echo` line to the launcher script's own output causes `connect` to still report a healthy, ready result and exit 0 — a successful transparent connect despite the tampered probe output, which is exactly the failure signature this scenario's expected contract calls out ("a successful transparent connect is the failure signal").

Platform scope: Reproduced on DGX Station; the probe/launcher validation logic is general software (no platform conditional found nearby) — expected to reproduce identically on any platform.
Regression: Unknown — earlier versions not tested this pass.
OpenShell issue: No.

## Environment

```text
Device: DGX Station GB300
OS: Ubuntu 24.04
Architecture: aarch64
NemoClaw: v0.0.122
```

## Steps to Reproduce

1. Onboard a DeepAgents (langchain-deepagents-code) sandbox, confirm `nemoclaw {sandbox} connect --probe-only` reports a healthy result.
2. Confirm `/usr/local/bin/nemoclaw-start` inside the sandbox is present, root-owned, not a symlink.
3. As root inside the sandbox container, prepend a preamble line to the launcher script's own output: `sed -i '1s/^/echo PREAMBLE\n/' /usr/local/bin/nemoclaw-start` (this makes the script print two lines instead of one when invoked).
4. From the host, run `nemoclaw {sandbox} connect --probe-only` again.

## Expected Result

Any multiline preamble in the probe script's output should be treated as untrusted. The connect command should either fail closed (non-zero exit, error logged) or otherwise reject the multiline output — a successful transparent connect is itself the failure signal per the documented contract for this probe path.

## Actual Result

```text
connect --probe-only succeeds transparently: exit code 0, output reports "launch readiness is healthy", result=ready — with no indication the probe output was tampered with or that validation rejected it.

Probe timing: readiness=899ms authority=0ms lifecycle=0ms gateway=0ms processes=0ms forward=0ms inference=0ms pairing=0ms publication=0ms readiness.sandbox-identity=12ms readiness.sandbox-identity.attempts=1 readiness.policy-get=79ms readiness.policy-get.attempts=1 readiness.inference-get=7ms readiness.inference-get.attempts=1 readiness.gateway-health=0ms readiness.gateway-health.attempts=0 readiness.forward-health=0ms readiness.forward-health.attempts=0 readiness.inference-route=62ms readiness.inference-route.attempts=1 readiness.firstFailedObservation=none readiness.firstDecision=accepted readiness.firstFallbackDecision=none total=901ms lifecycleAction=reused forwardAction=skipped result=ready
```

Contributor guide

Open the contributing guide

Research direction

Start at the implementation of `nemoclaw {sandbox} connect --probe-only` and trace validation of the inference-route output from `/usr/local/bin/nemoclaw-start`. Reproduce the issue by prepending `echo PREAMBLE` to that launcher, then verify that multiline output is rejected with a non-zero result or an explicit validation failure rather than reporting readiness.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell, typescript
Domain
cli, security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.