fix(hermes): pin patched base image and check installed dependencies - #8344
fix(hermes): pin patched base image and check installed dependencies#8344sandl99 wants to merge 25 commits into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughHermes now uses an updated immutable base-image digest. Its build unconditionally verifies ChangesHermes dependency patch
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-8344.docs.buildwithfern.com/nemoclaw |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in commit 03718ce in the TypeScript / code-coverage/cliThe overall coverage in commit 03718ce in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate. 3 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: 1 optional E2E recommendation
This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
|
Security review completed for the current branch: PASS, with no actionable findings. Reviewed categories: input and command injection, credentials and secrets, network exposure, authentication and authorization, supply-chain provenance, sandbox and privilege boundaries, filesystem and process safety, error and log disclosure, and dependency integrity. The change uses an immutable Hermes base-image digest and adds an unconditional post-messaging version assertion under isolated Python execution. It adds no user-controlled command material, credentials, network endpoints, permissions, or runtime write surfaces. The focused base-image contract passed 7/7, the documentation build completed with 0 errors and the 2 existing Fern warnings, DCO passed, and the commit is GitHub Verified. Remaining gates are the active repository CI, managed-image and E2E validation, automated review completion, and independent human approval. |
|
The author follow-up updates the corporate-CA security contract to include the intentional final dependency guard, which addresses the PR-related CLI shard failure. The resulting change matches the independently validated fix: the corporate-CA contract passes 6/6 and the Hermes base-image contract passes 7/7 locally. No maintainer push is needed; I am monitoring the fresh repository checks and E2E gate. |
|
Current-run classification: installer integration failed in an unrelated DGX Station revoked-host-key test because the inspection helper returned no binding under that runner; this PR does not change Station preparation or SSH trust. The focused failing case passes locally (1/1). Both advisor lanes also stopped on advisor-protocol consistency errors after preserving zero findings: the primary lane reported a terminology-receipt mismatch, and the second lane emitted analysis before its required terminology result completed. These are transient test/advisor infrastructure failures, not findings in the Hermes dependency change. After the parent workflows settle, I will use one bounded failed-job rerun and will not repeat it if either condition recurs. |
|
Self-hosted ARM64 classification: the managed-image build stopped because the npm registry reported an invalid attestation for eventsource-parser@3.1.0 while installing the unchanged reviewed MCP discovery runtime. The AMD64 managed-image build passed, and this PR does not change that package or install script. This is external registry-attestation infrastructure rather than a Hermes dependency regression. I will wait for the remaining self-hosted job to settle, then use the one bounded failed-job rerun; no further retry will be attempted if it recurs. |
|
E2E classification: the controller-validated child completed all selected Hermes, multi-platform managed-image startup, cloud onboarding, and security-posture jobs successfully. Its sole failure was the OpenClaw full-E2E timing budget: onboarding completed in 267 seconds against 263 seconds, the final first-turn segment took about 41 seconds against 14 seconds, and provider selection exceeded its 8-second budget by 21 milliseconds. This PR changes only the Hermes managed image, its security contracts, and dependency-review documentation; it does not change OpenClaw onboarding or timing thresholds. The required gate records a selected-job failure without a supported retry marker, so repository policy forbids rerunning that child on this branch revision. Later workflow attempts were rejected by the child identity guard and do not provide merge evidence. This is an external performance-timing blocker requiring human resolution before a new validated run. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
CI follow-up: the first attempt failed in timing-sensitive MCP lifecycle lock assertions outside this Hermes dependency change. The repository-controlled second attempt passed every job, including CLI shard 4 and the aggregate checks. I restarted the standard E2E gate controller so it can evaluate the successful CI result. No source change was needed; I am monitoring the resulting E2E run. |
|
The current branch and base were revalidated after the green CI retry. I approved the repository standard risk-reviewed E2E path for the reviewed Hermes dependency, build-validation, and documentation changes. The controller is now running; I will classify and address any resulting E2E failure before merge. |
|
Gate follow-up: the repository-controlled CI retry and trusted E2E controller both completed successfully. All 46 current checks pass, including both protected managed-image architectures, Hermes E2E, security posture, inference switching, and full E2E. No PR code change was needed for the earlier timing failure. The remaining merge gate is repository approval; I will re-audit and merge normally when approval is present. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
apurvvkumaria
left a comment
There was a problem hiding this comment.
Independent security review completed for the current revision: APPROVE.\n\n- Secrets and credentials: no new secret material or handling path.\n- Input and injection safety: the change uses fixed package names and reviewed version constants; no user-controlled command construction was added.\n- Authentication and authorization: no boundary or permission change.\n- Dependencies and supply chain: the final image now consumes the reviewed immutable OCI digest and verifies plus after every messaging install path. The producer workflow completed successfully from a verified repository commit.\n- Failure behavior: version drift fails the image build before onboarding can use the artifact.\n- Cryptography and integrity: no cryptographic primitive changed; image provenance and SLSA attestations are documented. The absence of an OCI-index SBOM remains explicitly recorded.\n- Configuration and deployment: both ordinary and managed-capability image configurations execute the final assertion.\n- Tests and holistic review: the two focused suites pass locally (13 tests total), the current required-check query succeeds including E2E, documentation and automated reviews are green, all commits are verified, DCO passes, and there are no unresolved review threads.\n\nNo security blocker remains. The temporary merge freeze still applies, so this approval does not authorize merging yet.
|
Correction to the dependency line in my approval review: the final image verifies aiohttp 3.14.3 and cryptography 50.0.0 after every messaging installation path. The rest of the security-review disposition is unchanged: approved, with no remaining security blocker, and the merge freeze remains active. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Advisor retry disposition: the primary GPT lane completed with high confidence and reported 0 blockers, 0 warnings, and 0 suggestions. The secondary Nemotron lane stopped after a partial review and also preserved 0 findings. The single bounded retry for this branch revision is consumed; no further retry is warranted. The documentation receipt has also been revalidated successfully for the current revision. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security review — exact head 49fb1609cf47e0ddb80ded834f50957fba89aadf against base c6713c9dd17a9682654713ccb6829b8714f1b307: PASS with no findings. The effective patch is safe from the reviewed security perspective, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. No secret, credential source, environment allowlist, or sensitive logging behavior changes.
-
Input Validation and Data Sanitization — PASS. The final-image assertion uses fixed package names and exact reviewed versions. No caller-controlled value enters the Python command, image reference, path, or shell structure.
-
Authentication and Authorization — PASS. No identity, permission, ownership, or authorization boundary changes.
-
Dependencies and Third-Party Libraries — PASS. The final Hermes image moves from the stale base to immutable OCI index
sha256:57c091ab9b31c924eac0050e66c834c37df875154a254964302a31b119b50b96and fails its build unlessaiohttp==3.14.3andcryptography==50.0.0remain installed after every messaging installation path. TrustedImages / Base Imagesrun31006872948completed successfully from verifiedmaincommitbd668121e918e7b1dda13062bed728f18150360e, which is an ancestor of the reviewed base. The documented absence of an OCI-index SBOM attestation remains explicit and is not represented as resolved. -
Error Handling and Logging — PASS. Version drift raises an assertion during image construction and prevents onboarding from consuming the artifact. Failure output is limited to package names and versions and contains no secret material.
-
Cryptography and Data Protection — PASS. The patch upgrades the reviewed
cryptographypackage version but changes no cryptographic primitive, key handling, protected-data flow, or retention boundary. -
Configuration and Security Headers — PASS. The guard runs after both ordinary messaging installation and the optional managed-capability union, outside the conditional. No network policy, port, privilege, capability, user, or security-header setting changes.
-
Security Testing — PASS. Source-shape tests bind the exact digest, exact dependency versions, guard placement after the final conditional, and corporate-CA final-stage command. Current exact-head GitHub checks, managed-image builds on all three agents, self-hosted sandbox checks, WSL, macOS, CodeQL, DCO, commit lint, and installer hash validation pass. Protected E2E remains mandatory and is still running.
-
System Security — PASS. The change prevents a stale dependency graph from reaching a supported Hermes sandbox and preserves the existing sandbox, messaging, corporate-CA, and managed-image trust boundaries.
Files Reviewed
agents/hermes/Dockerfileci/source-shape-test-budget.jsondocs/security/hermes-0.19.0-dependency-review.mdsrc/lib/agent/base-image-hermes.test.tstest/corporate-ca-build-tls-anchor.test.ts
Provenance and Required Gates
The signed base refresh is conflict-free. The effective five-file patch has raw SHA-256 886fbcc541df8f52a7d0a00ce2f090cfcf18b4c23adaf9d13498b0d110cdc373 and stable patch ID dd4faf941f214e774869d8f6cc367688d7dd3bae. Accepted security bug #8328 establishes the remediation scope. Base PR #8383 adds only the v0.0.103 release-note page and does not alter any effective PR file or reviewed trust boundary.
Fresh protected E2E, documentation receipt, unresolved-review resolution, and independent exact-head approval remain mandatory. This security review waives none of those gates.
|
Current advisor retry disposition: both advisor jobs stopped because the review workflow omitted required internal analysis/tool results. The partial secondary review preserved 0 blockers, 0 warnings, and 0 suggestions. The single bounded retry for this branch revision is consumed; no further retry will be requested. Current CI, protected E2E, documentation receipt, DCO, verification, approval, and independent security review are otherwise complete. The merge freeze remains active. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security revalidation — exact head f15e1709c01d81a0c03c0325f4421550c9ee5eb6 against current base 1608281462923ff8282151c7be1a109ee262b4e9: PASS with no findings, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. The effective PR patch is unchanged from the prior exact review. The base refresh adds no overlapping secret, credential, environment, or sensitive-logging path.
-
Input Validation and Data Sanitization — PASS. The reviewed validation and command/path construction are unchanged. The new base delta does not alter an effective PR file.
-
Authentication and Authorization — PASS. No identity, ownership, permission, or authorization boundary changed in the PR patch or its integration with the refreshed base.
-
Dependencies and Third-Party Libraries — PASS. The PR's reviewed dependency and artifact identities are unchanged. Base PR #8387 adds verified llama.cpp GGUF acquisition in eight disjoint files and does not change this PR's dependency surface.
-
Error Handling and Logging — PASS. The reviewed fail-closed behavior and diagnostics are unchanged; the base refresh introduces no overlapping error or logging path.
-
Cryptography and Data Protection — PASS. The PR's reviewed cryptographic and protected-data behavior is unchanged. No new cross-patch data flow exists.
-
Configuration and Security Headers — PASS. The effective PR patch preserves its reviewed configuration, network, privilege, capability, port, and header boundaries.
-
Security Testing — PASS. Raw patch SHA-256 remains
886fbcc541df8f52a7d0a00ce2f090cfcf18b4c23adaf9d13498b0d110cdc373and stable patch ID remainsdd4faf941f214e774869d8f6cc367688d7dd3bae. The documentation receipt must still be restamped to this exact head before merge. Prior targeted test evidence remains applicable; fresh exact-head GitHub Actions is authoritative. -
System Security — PASS. The signed refresh is conflict-free, preserves the reviewed patch byte-for-byte, and introduces no new runtime trust-boundary interaction with the disjoint base delta.
Provenance and Required Gates
This exact-head revalidation supplements the full prior nine-category review at #8344 (review). It applies the current rubric from .agents tree 7320c9e331ddbcd9ff83e0fce9387a004e3bd1aa.
Fresh required CI, protected E2E, the exact documentation receipt, unresolved-review resolution, GitHub commit verification, and an independent exact-head approval remain mandatory. This review waives none of those gates.
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security review — exact head f69ec94d59e2ee2c40921a148c21db6ab4d508e9 against current base b148bc13ee53b7a1f612d07e42275ec732e71877: PASS with no findings, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. The effective PR patch is unchanged and adds no secret, credential source, environment exposure, or sensitive logging. The refreshed base introduces no overlapping credential path.
-
Input Validation and Data Sanitization — PASS. Reviewed validation, command construction, and path handling remain unchanged. The portable-profile base delta has no exact file overlap with this PR.
-
Authentication and Authorization — PASS. No identity, ownership, permission, or authorization boundary is widened by the PR patch or its integration with the refreshed base.
-
Dependencies and Third-Party Libraries — PASS. The PR's reviewed dependency and artifact identities are unchanged. Base PRs #8333 and #8376 add disjoint E2E artifact restoration and portable experimental onboarding behavior.
-
Error Handling and Logging — PASS. Reviewed fail-closed behavior and diagnostics remain unchanged; the signed integrations add no overlapping error or logging path.
-
Cryptography and Data Protection — PASS. Reviewed cryptographic and protected-data behavior remains unchanged, with no new cross-patch data flow.
-
Configuration and Security Headers — PASS. The effective PR patch preserves its reviewed configuration, network, privilege, capability, port, and header boundaries. The hidden portable profile does not bypass this PR's authority checks.
-
Security Testing — PASS. Raw patch SHA-256 remains
886fbcc541df8f52a7d0a00ce2f090cfcf18b4c23adaf9d13498b0d110cdc373and stable patch ID remainsdd4faf941f214e774869d8f6cc367688d7dd3bae. The prior exact dependency, image, source-shape, and managed-image evidence remains applicable. Exact-head documentation writer revalidation passed; fresh GitHub Actions is authoritative. -
System Security — PASS. Both signed refreshes are conflict-free, preserve the effective patch byte-for-byte, and introduce no new runtime trust-boundary interaction. For #7853 specifically, the portable profile supplies onboarding defaults but neither stages messaging credentials nor bypasses registry-driven credential-drift validation.
Provenance and Required Gates
The exact head preserves contributor history through signed merge commits and applies the current rubric from .agents tree 7320c9e331ddbcd9ff83e0fce9387a004e3bd1aa. This supplements the full prior nine-category review at #8344 (review).
Fresh required CI, protected E2E, the exact documentation receipt, unresolved-review resolution, GitHub commit verification, and an independent exact-head approval remain mandatory. This review waives none of those gates.
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Final validation receipt for branch revision All eight selected protected jobs passed: Hermes inference switching, Hermes and OpenClaw full journeys, Hermes and OpenClaw security posture, cloud onboarding, and managed-image startup on both AMD64 and ARM64. The current check set has no pending or failing contexts (70 successful; 36 intentionally skipped), the PR remains approved and mergeable, and there are no unresolved review threads. The current branch revision is GitHub-verified and the PR DCO declaration remains present. No code change or additional retry was needed. The merge freeze remains active, so no merge or auto-merge action was taken. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Summary
Some Hermes sandbox image build paths could install versions of
aiohttporcryptographythat differed from the reviewed versions after messaging package installation.This change pins the reviewed Hermes base image OCI index and checks the installed versions after each messaging installation path.
A live E2E check reads both versions from the running Hermes sandbox.
Related Issue
Fixes #8328
Changes
agents/hermes/Dockerfileto Hermes base image OCI indexsha256:57c091ab9b31c924eac0050e66c834c37df875154a254964302a31b119b50b96.aiohttp==3.14.3andcryptography==50.0.0after messaging package installation whenNEMOCLAW_MANAGED_IMAGE_CAPABILITY_UNIONis0or1.docs/security/hermes-0.19.0-dependency-review.mdwith base image provenance, installed-version evidence, and the missing SBOM attestation.Type of Change
Quality Gates
03718ce6cca2e4455a23abd6f2e2a754243f3ae7against base SHAbf429e90e5b217632356e2d918bfc333e5b8e959.Documentation Writer Review
docs-updateddocs/security/hermes-0.19.0-dependency-review.md. Reviewed the complete PR diff, includingagents/hermes/Dockerfile, the source tests, the live Hermes E2E assertion, and the dependency review, for PR commit03718ce6cca2e4455a23abd6f2e2a754243f3ae7against base SHAbf429e90e5b217632356e2d918bfc333e5b8e959. The documentation distinguishes the published base image from the Hermes sandbox image. It records the workflow run, source commit, OCI digest, installed-version checks, missing SBOM attestation, and remaining protected gates. The review covered terminology, structure, voice, claim scope, evidence separation, and code-sample presentation; no code sample changed.DGX Station Hardware Evidence
scripts/prepare-dgx-station-host.shdoes not change.Verification
Signed-off-by:line and every commit appears asVerifiedin GitHub — all 25 commits appear asVerified.pre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailable — normal hooks passed for the change set and current-main refresh commits.03718ce6cca2e4455a23abd6f2e2a754243f3ae7. No standalone local test suite ran after the merge.npm run docsbuilds without warnings (doc changes only) — GitHub Actions documentation validation is not complete for the current PR commit.Base Image Provenance
The pinned Hermes base image has this identity:
Images / Base Imagesrun31006872948, attempt 1.bd668121e918e7b1dda13062bed728f18150360e.sha256:57c091ab9b31c924eac0050e66c834c37df875154a254964302a31b119b50b96.sha256:cf6e95640faac8e5099cc9d267a6eb9b1f9192abbfcc9552a81a8ae22b4a47bb.sha256:92e7c982bc5106f4c3f551032418fb72375b4d37bff50e21baa3d0e861d7519e.Each platform image identifies repository
NVIDIA/NemoClawand source commitbd668121e918e7b1dda13062bed728f18150360e.Each platform image has SLSA provenance tied to the producer run and source commit.
The OCI index has no SBOM attestation.
Sensitive-Path Security Review
Independent review found no security finding for PR commit
03718ce6cca2e4455a23abd6f2e2a754243f3ae7against base SHAbf429e90e5b217632356e2d918bfc333e5b8e959.cryptographyto the reviewed version and adds no custom cryptography or protected-data handling.Required checks and maintainer approval remain separate merge requirements.
GitHub Actions
GitHub Actions is authoritative for PR commit
03718ce6cca2e4455a23abd6f2e2a754243f3ae7against base SHAbf429e90e5b217632356e2d918bfc333e5b8e959.Required checks and the protected Hermes E2E gate are not complete.
No check waiver is recorded.
Signed-off-by: San Dang sdang@nvidia.com