Skip to content

fix(install): add Docker group access security note in install flow and docs#4011

Merged
jyaunches merged 3 commits into
mainfrom
fix/docker-group-security-note
May 21, 2026
Merged

fix(install): add Docker group access security note in install flow and docs#4011
jyaunches merged 3 commits into
mainfrom
fix/docker-group-security-note

Conversation

@zyang-dev
Copy link
Copy Markdown
Contributor

@zyang-dev zyang-dev commented May 21, 2026

Summary

Adds Docker group security context to the Linux install and onboarding guidance so users understand both why NemoClaw needs Docker access and the privilege impact of granting it.

Changes

  • Added Docker group access warnings to the prerequisites and troubleshooting docs.
  • Updated installer output to explain that Docker group access is the standard Linux Docker setup path for trusted local accounts.
  • Updated onboard preflight remediation text with the same Docker access and security wording.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • make docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: zyang-dev 267119621+zyang-dev@users.noreply.github.com

Summary by CodeRabbit

  • Documentation
    • Enhanced Docker security guidance across setup and troubleshooting: added warning callouts about required Docker access, daemon attack-surface links, and notes that group membership grants root-level control and should be limited on shared systems.
  • Chores
    • Updated installer messaging to provide clearer Docker-group guidance, expanded security rationale, and a note that you may be prompted for your password.

Review Change Stack

…nd docs

Signed-off-by: zyang-dev <267119621+zyang-dev@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 21, 2026

📝 Walkthrough

Walkthrough

Adds Docker-access warning text in two docs, expands installer messaging when the user lacks docker-group membership, and updates the onboarding preflight remediation reason to include security rationale and a link to Docker daemon attack-surface guidance.

Changes

Docker Group Access Security Communication

Layer / File(s) Summary
Docker group access warnings across docs, tooling, and onboarding
docs/get-started/prerequisites.mdx, docs/reference/troubleshooting.mdx, scripts/install.sh, src/lib/onboard/preflight.ts
Inserted warning callouts in prerequisites and troubleshooting docs, updated ensure_docker installer output with expanded guidance and password notice, and extended the preflight docker_group_permission remediation reason to mention root-level daemon control and link to Docker security guidance.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 I hopped through docs and scripts tonight,

whispering warnings soft and light.
Docker keys are strong and deep,
Guard them close before you sleep.
🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding Docker group security guidance to install flow and documentation.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/docker-group-security-note

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

@zyang-dev zyang-dev self-assigned this May 21, 2026
@zyang-dev zyang-dev added the v0.0.49 Release target label May 21, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

E2E Advisor Recommendation

Required E2E: cloud-onboard-e2e, onboard-negative-paths-e2e
Optional E2E: openclaw-onboard-security-posture-e2e

Dispatch hint: cloud-onboard-e2e,onboard-negative-paths-e2e

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • cloud-onboard-e2e (medium): Runs the public installer/onboard path end-to-end on Linux with Docker, covering the primary user flow affected by scripts/install.sh and ensuring the installer still reaches a healthy sandbox after the messaging changes.
  • onboard-negative-paths-e2e (medium): Exercises onboarding failure and edge-path handling. The preflight remediation text changed for the Docker permission-denied case, so the closest existing negative-path E2E should run to catch regressions in onboard error handling and output plumbing.

Optional E2E

  • openclaw-onboard-security-posture-e2e (medium): Optional confidence for the security-posture-adjacent nature of the Docker group guidance: validates full OpenClaw onboard on a non-root host user with runtime guard assertions, though it does not specifically assert Docker group warning text.

New E2E recommendations

  • installer/onboarding Docker permissions (medium): No existing E2E appears to directly force the Linux state where docker.service is active but the current user cannot access /var/run/docker.sock, then assert installer/preflight guidance for docker-group membership and newgrp/relogin.
    • Suggested test: Add a hermetic Linux onboarding preflight E2E that runs as a non-docker-group user or against a permission-denied Docker socket mock and asserts the docker_group_permission remediation/action text and install.sh ensure_docker guidance.

Dispatch hint

  • Workflow: nightly-e2e.yaml
  • jobs input: cloud-onboard-e2e,onboard-negative-paths-e2e

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
docs/get-started/prerequisites.mdx (1)

39-40: ⚡ Quick win

Use inline code formatting for the docker group references.

Please wrap docker as inline code in this warning text for consistency with docs formatting rules.

As per coding guidelines: "CLI commands, file paths, flags, parameter names, and values must use inline code formatting."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/get-started/prerequisites.mdx` around lines 39 - 40, Update the warning
text so all occurrences of the docker group use inline code formatting: replace
the plain text "docker" where it references the group (e.g., "docker group" and
"Docker group members") with inline `docker` code formatting to match docs
guidelines and ensure consistency in the "On personal Linux development
machines..." warning paragraph.
docs/reference/troubleshooting.mdx (1)

85-86: ⚡ Quick win

Format docker as inline code in this warning.

Use inline code for the docker group mentions to match the docs formatting standard.

As per coding guidelines: "CLI commands, file paths, flags, parameter names, and values must use inline code formatting."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/reference/troubleshooting.mdx` around lines 85 - 86, Update the warning
sentence to format the docker group name as inline code: replace plain
occurrences of the word docker (e.g., "docker group", "Docker group members")
with backticked `docker` so CLI/group mentions follow the docs' inline `code`
formatting standard; ensure both instances in the warning use `docker` and
preserve the rest of the wording and punctuation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/get-started/prerequisites.mdx`:
- Around line 39-40: Update the warning text so all occurrences of the docker
group use inline code formatting: replace the plain text "docker" where it
references the group (e.g., "docker group" and "Docker group members") with
inline `docker` code formatting to match docs guidelines and ensure consistency
in the "On personal Linux development machines..." warning paragraph.

In `@docs/reference/troubleshooting.mdx`:
- Around line 85-86: Update the warning sentence to format the docker group name
as inline code: replace plain occurrences of the word docker (e.g., "docker
group", "Docker group members") with backticked `docker` so CLI/group mentions
follow the docs' inline `code` formatting standard; ensure both instances in the
warning use `docker` and preserve the rest of the wording and punctuation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 84f06532-5c64-48d9-9c52-a871804fc5f5

📥 Commits

Reviewing files that changed from the base of the PR and between a9abd0d and 01191a1.

📒 Files selected for processing (4)
  • docs/get-started/prerequisites.mdx
  • docs/reference/troubleshooting.mdx
  • scripts/install.sh
  • src/lib/onboard/preflight.ts

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

PR Review Advisor

Recommendation: blocked
Confidence: high
Analyzed HEAD: 0eda1491e5b2fd894fe2ab28cf4732a9418793a6
Findings: 2 blocker(s), 3 warning(s), 1 suggestion(s)

This is an automated advisory review. A human maintainer must make the final merge decision.

Limitations: Review used the provided trusted deterministic context and diff; no scripts, tests, package-manager commands, or E2E workflows were executed by this advisor.; No linked issues were present, so acceptance mapping is based on PR-described clauses and E2E Advisor comment clauses rather than issue acceptance criteria.; Review thread state was unavailable; GraphQL reviewDecision=REVIEW_REQUIRED indicates maintainer review remains required.; Line numbers are based on the provided diff context and may need confirmation in the GitHub UI after rebases.; The E2E status assessment is based on the provided status rollup; required E2E job pass evidence for the current head SHA was not present.; PR-provided titles, bodies, comments, and bot summaries were treated as untrusted evidence and cross-checked against trusted deterministic context and diff where possible.

Workflow run

Full advisor summary

PR Review Advisor

Base: origin/main
Head: HEAD
Analyzed SHA: 0eda1491e5b2fd894fe2ab28cf4732a9418793a6
Recommendation: blocked
Confidence: high

The Docker group privilege-warning changes are security-positive and focused, but the PR remains blocked by mergeStateStatus=BLOCKED and missing required E2E evidence for the current head SHA.

Gate status

  • CI: pass — 5 required status context(s) completed with no failures for head SHA 0eda149: checks, commit-lint, dco-check, check-hash, changes. Non-required contexts still pending: 2; failed: 0.
  • Mergeability: fail — GitHub reports mergeStateStatus=BLOCKED for head SHA 0eda149.
  • Review threads: unknown — No review thread state was available in the deterministic gate status; GraphQL reviewDecision=REVIEW_REQUIRED indicates maintainer review is still required.
  • Risky code tested: fail — Risky areas detected (installer/bootstrap shell, onboarding/host glue) with no test file changes. E2E Advisor required cloud-onboard-e2e and onboard-negative-paths-e2e, but pass evidence for those jobs on head SHA 0eda149 was not present.

🔴 Blockers

  • Mergeability gate is blocked: The PR is not merge-ready while GitHub reports mergeStateStatus=BLOCKED, even though required CI contexts are currently reported as passing.
    • Recommendation: Resolve the branch-protection or mergeability blocker and re-check mergeStateStatus for head SHA 0eda149 before treating the PR as merge-ready.
    • Evidence: Trusted context: gateStatus.mergeability.status=fail with evidence "mergeStateStatus=BLOCKED"; GraphQL pullRequest.mergeStateStatus="BLOCKED".
  • Required E2E jobs are missing for the current head SHA: The E2E Advisor required cloud-onboard-e2e and onboard-negative-paths-e2e because installer and onboarding preflight paths changed. The status rollup shows E2E recommendation, wsl-e2e, and macos-e2e, but not the required jobs passing for the current head SHA.
    • Recommendation: Ensure cloud-onboard-e2e and onboard-negative-paths-e2e pass for 0eda149, or have maintainers explicitly document why equivalent coverage is sufficient.
    • Evidence: E2E Advisor comment: "Required E2E: cloud-onboard-e2e, onboard-negative-paths-e2e". Status rollup for head SHA 0eda149 does not list those job names as completed successfully.

🟡 Warnings

  • Installer Docker-group branch changed without direct negative-path coverage (scripts/install.sh:2115): The installer branch that adds a Linux user to the docker group now emits new privilege-impact messaging before sudo usermod. This path changes host group membership and is part of the bootstrap flow, but no test file changes or direct branch assertions are included.
    • Recommendation: Add or run a negative-path installer scenario for a non-root Linux user not in the active docker group that verifies the sudo/usermod prompt, root-level-impact warning, newgrp instructions, and no unintended continuation into onboarding before group refresh.
    • Evidence: Diff adds multiple info lines before sudo usermod -aG docker "$current_user"; changedFiles contains no test files; trusted context marks installer/bootstrap shell as risky and riskyCodeTested=fail.
  • Preflight docker_group_permission remediation text lacks direct assertion (src/lib/onboard/preflight.ts:612): The onboarding preflight remediation for docker_group_permission was expanded with security wording, but no unit or scenario test asserts that the correct remediation id, blocking status, commands, and updated warning are selected when Docker is installed, docker.service is active, and the current user cannot reach the daemon.
    • Recommendation: Add a unit or scenario test for the likelyGroupIssue branch in planHostRemediation, including the root-level-impact warning and Docker daemon attack-surface link.
    • Evidence: Diff expands the reason string for action id docker_group_permission; E2E Advisor states existing E2E does not specifically model Docker installed/service active with missing docker socket permission or active docker-group membership.
  • Active open PRs overlap changed docs and installer surfaces: The patch applies to files that still exist and is not superseded, but several active open PRs touch the same documentation and installer surfaces, increasing rebase/conflict and user-message drift risk.

🔵 Suggestions

  • Preflight monolith continues to grow (src/lib/onboard/preflight.ts:548): The preflight module is already large and this PR adds more inline remediation prose. The increase is small, but duplicated Docker group security wording now appears across docs, scripts/install.sh, and planHostRemediation.
    • Recommendation: Consider extracting shared Docker group warning wording into a constant/helper or documented source of truth to reduce future drift between installer and onboarding messages.
    • Evidence: Trusted monolithDeltas reports src/lib/onboard/preflight.ts grew from 1378 to 1382 lines; the same Docker group warning appears in docs, scripts/install.sh, and planHostRemediation.

Acceptance coverage

  • unknown — No linked issues were found for this pull request.: github.linkedIssues is an empty array. No linked issue acceptance clauses were available to map literally; coverage is based on PR-described clauses and E2E Advisor comment clauses.
  • met — Adds Docker group security context to the Linux install and onboarding guidance so users understand both why NemoClaw needs Docker access and the privilege impact of granting it.: Diff adds Docker group warnings to prerequisites and troubleshooting docs, expands scripts/install.sh installer output, and expands src/lib/onboard/preflight.ts docker_group_permission remediation reason.
  • met — Added Docker group access warnings to the prerequisites and troubleshooting docs.: docs/get-started/prerequisites.mdx and docs/reference/troubleshooting.mdx both add a block covering Docker access, root-level daemon impact, trusted local accounts, shared/managed systems, and Docker daemon attack-surface guidance.
  • met — Updated installer output to explain that Docker group access is the standard Linux Docker setup path for trusted local accounts.: scripts/install.sh replaces the single sudo-add-to-group explanation with messages stating NemoClaw needs Docker access, docker group membership is standard on personal Linux development machines, Docker group members can control the daemon with root-level impact, and shared/managed systems should use the organization's approved path.
  • met — Updated onboard preflight remediation text with the same Docker access and security wording.: src/lib/onboard/preflight.ts expands the docker_group_permission reason with Docker access, standard Linux setup, root-level impact, trusted-account/shared-system guidance, and the Docker daemon attack-surface URL.
  • missing — Tests added or updated for new or changed behavior: The PR body checkbox is unchecked, changedFiles contains no test files, and trusted gateStatus.riskyCodeTested=fail.
  • unknownmake docs builds without warnings (doc changes only): The PR body checkbox is unchecked. The status rollup shows preview and markdown-links success, but no explicit make docs evidence was provided.
  • missing — cloud-onboard-e2e (medium): Runs the public installer/onboard path end-to-end on Linux with Docker, covering the primary user flow affected by scripts/install.sh and ensuring the installer still reaches a healthy sandbox after the messaging changes.: E2E Advisor required cloud-onboard-e2e, but the status rollup for head SHA 0eda149 does not show cloud-onboard-e2e passing.
  • missing — onboard-negative-paths-e2e (medium): Exercises onboarding failure and edge-path handling. The preflight remediation text changed for the Docker permission-denied case, so the closest existing negative-path E2E should run to catch regressions in onboard error handling and output plumbing.: E2E Advisor required onboard-negative-paths-e2e, but the status rollup for head SHA 0eda149 does not show onboard-negative-paths-e2e passing.
  • unknown — openclaw-onboard-security-posture-e2e (medium): Optional confidence for the security-posture-adjacent nature of the Docker group guidance: validates full OpenClaw onboard on a non-root host user with runtime guard assertions, though it does not specifically assert Docker group warning text.: This is optional in the E2E Advisor comment. No pass evidence for openclaw-onboard-security-posture-e2e was provided in the status rollup.
  • missing — installer/onboarding Docker permissions (medium): No existing E2E appears to directly force the Linux state where docker.service is active but the current user cannot access /var/run/docker.sock, then assert installer/preflight guidance for docker-group membership and newgrp/relogin.: E2E Advisor identifies this as a new recommended coverage gap. No new test file or E2E pass evidence directly covers the Linux permission-denied Docker socket state.

Security review

  • pass — 1. Secrets and Credentials: No hardcoded secrets, API keys, passwords, tokens, credential files, or connection strings were added. The diff only adds documentation and user-facing installer/preflight text.
  • pass — 2. Input Validation and Data Sanitization: No new user-controlled parsing, URL fetching, deserialization, path handling, or input validation logic was introduced. The changed installer command still quotes $current_user in sudo usermod -aG docker "$current_user".
  • pass — 3. Authentication and Authorization: No endpoints, authentication checks, token validation, scopes, or authorization logic changed. The PR documents Docker daemon authority rather than changing access-control behavior.
  • pass — 4. Dependencies and Third-Party Libraries: No new dependencies or package versions were added. The existing Docker convenience-script flow remains unchanged except for explanatory text around Docker group access.
  • pass — 5. Error Handling and Logging: The installer and preflight output changes do not log secrets or sensitive state. They add privilege-impact messaging before sudo/usermod guidance and remediation commands.
  • pass — 6. Cryptography and Data Protection: Not applicable — no cryptographic operations, key handling, encryption, hashing, or data-protection mechanisms changed.
  • pass — 7. Configuration and Security Headers: No runtime configuration, HTTP endpoints, CORS, security headers, ports, container images, Docker daemon policy defaults, or sandbox blueprints changed. The added text improves user awareness of Docker group security implications.
  • warning — 8. Security Testing: Security-sensitive installer/onboarding host-remediation paths changed, but no direct tests were added and required E2E jobs are not shown passing for head SHA 0eda149.
  • warning — 9. Holistic Security Posture: The content improves disclosure that Docker group membership has root-level daemon impact and does not appear to introduce a direct vulnerability. However, it touches installer/bootstrap shell and onboarding/host glue without direct negative-path coverage, and mergeability/E2E gates remain unresolved.

Test / E2E status

  • Test depth: e2e_required — Runtime/sandbox/infrastructure paths need real execution coverage: docs/get-started/prerequisites.mdx, docs/reference/troubleshooting.mdx, scripts/install.sh, src/lib/onboard/preflight.ts. Installer and preflight Docker group remediation behavior cannot be fully proven by static review.
  • E2E Advisor: missing
  • Required E2E jobs: cloud-onboard-e2e, onboard-negative-paths-e2e
  • Missing for analyzed SHA: cloud-onboard-e2e, onboard-negative-paths-e2e

✅ What looks good

  • The PR consistently discloses that Docker group membership can control the daemon with root-level impact.
  • The installer change remains focused on user-facing messaging and does not introduce new shell-string execution in the modified lines.
  • No secrets, dependencies, SSRF-related logic, credential flows, network policy, workflow trusted-code boundaries, or sandbox blueprint changes were introduced.
  • The docs link to Docker's daemon attack-surface guidance and distinguish personal development machines from shared or managed systems.
  • The changed files still exist on the target branch, and the diff is small and focused.

Review completeness

  • Review used the provided trusted deterministic context and diff; no scripts, tests, package-manager commands, or E2E workflows were executed by this advisor.
  • No linked issues were present, so acceptance mapping is based on PR-described clauses and E2E Advisor comment clauses rather than issue acceptance criteria.
  • Review thread state was unavailable; GraphQL reviewDecision=REVIEW_REQUIRED indicates maintainer review remains required.
  • Line numbers are based on the provided diff context and may need confirmation in the GitHub UI after rebases.
  • The E2E status assessment is based on the provided status rollup; required E2E job pass evidence for the current head SHA was not present.
  • PR-provided titles, bodies, comments, and bot summaries were treated as untrusted evidence and cross-checked against trusted deterministic context and diff where possible.
  • Human maintainer review required: yes

zyang-dev and others added 2 commits May 21, 2026 12:44
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
docs/reference/troubleshooting.mdx (1)

1200-1213: ⚡ Quick win

Rewrite passive constructions to use active voice.

Several sentences use passive voice where active voice would be clearer:

  • Line 1202: "When NemoClaw runs inside WSL, it checks..." is good, but later "Ollama is installed" is passive
  • Line 1203: "daemon is not reachable" → prefer "you cannot reach the daemon" or "the wizard cannot reach the daemon"
  • Line 1205: "PowerShell interop is enabled" → prefer "WSL has PowerShell interop enabled" or "you have enabled PowerShell interop"
  • Line 1211: "process is missing" → prefer "the process does not exist"
  • Line 1212: "endpoint is unreachable" → prefer "you cannot reach the endpoint"

As per coding guidelines, active voice is required throughout documentation. The guideline example shows: Bad: "A gateway is created by the CLI." Good: "The CLI creates a gateway."

Additionally, four consecutive sentences begin with "If" (lines 1203, 1205, 1211, 1212), which reduces readability. Consider varying sentence structure.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/reference/troubleshooting.mdx` around lines 1200 - 1213, Rewrite the
passive sentences in the "Windows-host Ollama is installed but not shown during
onboarding" section to active voice and vary sentence openings: change "Ollama
is installed but the daemon is not reachable" to "You have Ollama installed but
cannot reach the daemon" or "the wizard cannot reach the daemon"; change "daemon
is not reachable" occurrences to "you cannot reach the daemon" or "the wizard
cannot reach the endpoint"; change "PowerShell interop is enabled in WSL" to
"you have enabled PowerShell interop in WSL" or "WSL has PowerShell interop
enabled"; change "process is missing" to "the process does not exist" and
"endpoint is unreachable" to "you cannot reach the endpoint"; also reduce
repetitive sentence openings by combining or reordering the four consecutive
"If" sentences for clearer flow while preserving the original troubleshooting
steps and commands.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/reference/troubleshooting.mdx`:
- Around line 1200-1213: Rewrite the passive sentences in the "Windows-host
Ollama is installed but not shown during onboarding" section to active voice and
vary sentence openings: change "Ollama is installed but the daemon is not
reachable" to "You have Ollama installed but cannot reach the daemon" or "the
wizard cannot reach the daemon"; change "daemon is not reachable" occurrences to
"you cannot reach the daemon" or "the wizard cannot reach the endpoint"; change
"PowerShell interop is enabled in WSL" to "you have enabled PowerShell interop
in WSL" or "WSL has PowerShell interop enabled"; change "process is missing" to
"the process does not exist" and "endpoint is unreachable" to "you cannot reach
the endpoint"; also reduce repetitive sentence openings by combining or
reordering the four consecutive "If" sentences for clearer flow while preserving
the original troubleshooting steps and commands.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5de88d39-843a-4d33-b546-b263db16fa36

📥 Commits

Reviewing files that changed from the base of the PR and between f0a48ee and 0eda149.

📒 Files selected for processing (2)
  • docs/reference/troubleshooting.mdx
  • scripts/install.sh
✅ Files skipped from review due to trivial changes (1)
  • scripts/install.sh

@github-actions
Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26255963909
Target ref: fix/docker-group-security-note
Requested jobs: cloud-onboard-e2e,onboard-negative-paths-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
onboard-negative-paths-e2e ✅ success

@jyaunches jyaunches merged commit 7896900 into main May 21, 2026
83 checks passed
miyoungc added a commit that referenced this pull request May 22, 2026
Audit found the v0.0.49 release notes promised behaviors that did not ship
or were never implemented. Realign to the actual code on main.

- Drop the EXDEV runtime-deps claim: #3820 was reverted by #4051 in this
  release window, so the behavior is not present.
- Drop the "skip broad permission repair" claim: no corresponding commit
  in v0.0.48..v0.0.49.
- Rewrite the gateway probe classifier list in release-notes.mdx and
  commands.mdx to match the real states emitted by
  src/lib/status-command-deps.ts (named gateway unreachable / present
  but not Connected / pointing at a different name / not configured).
  The previous "non-JSON health response" example did not exist in code.
- Expand the channel-removal bullet to describe #4001's user-visible
  teardown (durable QR-paired state wipe, abort-on-failure, config.json
  re-sync) in addition to the existing #4013 sync.
- Add bullets for user-visible PRs that were merged in the release
  window but missing from the notes: #3854 (restricted dmesg in debug
  output), #3866 (shields status and logs --tail UX), #3984 (Hermes
  messaging policy scoping), and #4011 (Docker group security note).

Regenerated nemoclaw-user-overview and nemoclaw-user-reference skills
from the updated docs via scripts/docs-to-skills.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cv pushed a commit that referenced this pull request May 22, 2026
## Summary
Refreshes the NemoClaw docs for the v0.0.49 hardening release, including
release notes, command reference updates, troubleshooting guidance,
version metadata, and regenerated user skills.

## Changes
- #3796, #3854, #3863, #3866, #3984, #4001, #4011, #4013, #4020, #4022,
#4023, #4060, #4062 -> `docs/about/release-notes.mdx`: Adds the v0.0.49
hardening release summary covering gateway reliability,
status/doctor/shields and debug UX, OpenClaw compatibility, messaging
channel teardown, Hermes policy scoping, snapshots, source installs and
Docker group security note, GPU preflight, CLI usage, E2E, and CI
improvements.
- #3796 -> `docs/manage-sandboxes/backup-restore.mdx` and
`docs/reference/commands.mdx`: Documents `snapshot restore --to`
overwrite protection and the `--force` opt-in.
- #3863, #4013, #4020, #4023 -> `docs/reference/commands.mdx`: Documents
missing channel argument usage, sandbox-scoped custom preset matching,
session policy preset sync, and gateway failure classification (uses the
real probe states from `src/lib/status-command-deps.ts`).
- #4022, #4060, #4062 -> `docs/reference/troubleshooting.mdx`: Adds
guidance for gateway-down `connect`, source checkout OpenShell
bootstrapping, WDDM placeholder GPU names, and Jetson sandbox GPU
passthrough.
- Release prep -> `docs/project.json`, `docs/versions1.json`,
`.agents/skills/nemoclaw-user-*`: Bumps docs metadata to 0.0.49 and
refreshes generated user skills from the Fern docs.

## Type of Change
- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

## Verification
- [x] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

\`make docs\` was attempted locally but did not complete because \`npm\`
returned \`403 Forbidden\` while fetching \`fern-api\` from
\`registry.npmjs.org\` in the sandboxed environment.

---
Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Released v0.0.49 with reliability and compatibility improvements
including faster gateway failure diagnostics and safer snapshot restore
behavior
* Enhanced snapshot restore documentation with `--to` cloning and
`--force` overwrite requirements
* Expanded troubleshooting guides for source installs, GPU setup, and
gateway recovery
* Clarified Docker group access requirements and improved CLI command
reference

* **Chores**
  * Version bumped to 0.0.49

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/4078?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v0.0.49 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants