[All Platforms][Agent&Skills] DeepAgents connect probe accepts multiline launcher output instead of failing closed
- 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
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