fix(onboard): accept owned Teams webhook field - #9654
Conversation
Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 12 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe managed startup profile now permits the stock OpenClaw Microsoft Teams webhook structure. Focused tests cover valid ports, malformed values, mismatched render metadata, extra fields, credentials, and unowned placement. ChangesMicrosoft Teams webhook validation
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to This narrowly accepts the schema-owned Microsoft Teams webhook object while continuing to reject other webhook locations and malformed or credential-bearing values. No actionable merge-blocking risk remains after normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
2 terminology differences from the second opinionAdvisory only. These are normalized differences from the primary terminology receipt.
2 additional E2E selections from the second opinionAdvisory only. The primary lane did not select these E2E jobs or targets.
Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests. Since last review: 0 prior items resolved · 0 still apply · 0 new items found 2 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. A maintainer can dispatch the default E2E suite for the commit under review. Recommended E2E: None Manual-only E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
prekshivyas
left a comment
There was a problem hiding this comment.
Reviewed commit 8962b364874ae054529ad31217cea0f23c799935 against base dbf48bae9d35beda8d781205a46e881d6f8f900a.
The credential-field exception is limited to the exact Microsoft Teams OpenClaw render identity and a webhook object containing only an integer port in 1–65535 plus the exact /api/messages path. Normal payload traversal still rejects custom prototypes, accessors, symbols, extra fields, nested credential material, and placement outside that owned render. I found no blocking issue.
Test evidence: four focused/regression files passed (223 tests), including all managed startup profile, builder, runtime alias, and Teams webhook tests; git diff --check passed. The current failed CI shard is an unrelated timeout in host-local-vllm-selection.test.ts; the other CLI shards and security/build checks passed.
Security review:
- Secrets and credentials: PASS — only a fixed non-secret webhook listener shape is exempted; nested credential scanning remains active.
- Input validation: PASS — render identity, object shape, port bounds, and path are exact.
- Authentication and authorization: PASS — no authentication or runtime authority changes.
- Dependencies: PASS — no dependency changes.
- Error handling and logging: PASS — rejection behavior remains fail-closed outside the owned shape.
- Cryptography: PASS — no cryptographic changes.
- Configuration and deployment: PASS — no deployment changes; the accepted configuration matches the owned Teams render contract.
- Testing and coverage: PASS — positive, boundary, malformed, mismatched, extra-field, secret-bearing, and misplaced cases are covered.
- System-level safety: PASS — the generic credential scanner remains authoritative for every non-matching path and value.
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry required before planning the v0.0.112 release. The entry summarizes the 75 merged PRs in `v0.0.111..af56158`, links user-facing themes to published documentation routes, and links every included source PR. ## Changes - Add `docs/changelog/2026-08-20.mdx` with the exact `## v0.0.112` release heading and parser-safe MDX SPDX comment. - Cover managed local inference, onboarding and sandbox lifecycle recovery, messaging continuity, review and release automation, E2E qualification, dependency updates, and cumulative documentation catch-up. - Preserve the documentation skip list and supported-agent matrix; the release entry contains none of the blocked terms or excluded experimental surfaces. ### Source-to-doc mapping - #8620 -> `docs/changelog/2026-08-20.mdx`: Record the LangChain Deep Agents Code 0.1.55 update. - #9192 -> `docs/changelog/2026-08-20.mdx`: Record the OpenShell 0.0.106 update. - #9240 -> `docs/changelog/2026-08-20.mdx`: Record the cold base-image pull heartbeat. - #9412 -> `docs/changelog/2026-08-20.mdx`: Record voice context preservation across sequential turns. - #9483 -> `docs/changelog/2026-08-20.mdx`: Record Ollama model verification through the sandbox endpoint. - #9493 -> `docs/changelog/2026-08-20.mdx`: Record E2E cloud-check wiring coverage. - #9495 -> `docs/changelog/2026-08-20.mdx`: Record Model Router endpoint health validation. - #9534 -> `docs/changelog/2026-08-20.mdx`: Record default-sandbox resolution for tunnel status. - #9537 -> `docs/changelog/2026-08-20.mdx`: Record Linux AMD64 Muse and Lightning profiles. - #9543 -> `docs/changelog/2026-08-20.mdx`: Record corrected network-policy preset examples. - #9545 -> `docs/changelog/2026-08-20.mdx`: Record shared runtime-adapter port validation. - #9578 -> `docs/changelog/2026-08-20.mdx`: Record Portable network creation before host aliases. - #9589 -> `docs/changelog/2026-08-20.mdx`: Record running vLLM profile validation. - #9590 -> `docs/changelog/2026-08-20.mdx`: Record the two-turn atomic advisor review. - #9597 -> `docs/changelog/2026-08-20.mdx`: Record Portable uninstall without host-owned lifecycle resources. - #9605 -> `docs/changelog/2026-08-20.mdx`: Record release automation for an initially empty tag history. - #9607 -> `docs/changelog/2026-08-20.mdx`: Record credential retry navigation. - #9626 -> `docs/changelog/2026-08-20.mdx`: Record retirement of DeepSeek V4 Pro from the featured menu. - #9631 -> `docs/changelog/2026-08-20.mdx`: Record reduction-directed advisor design blockers. - #9632 -> `docs/changelog/2026-08-20.mdx`: Record Portable Ollama under Podman. - #9633 -> `docs/changelog/2026-08-20.mdx`: Record llama.cpp attachment without `/props` model aliases. - #9636 -> `docs/changelog/2026-08-20.mdx`: Record Docker authority independent of terminal state. - #9641 -> `docs/changelog/2026-08-20.mdx`: Record the separate Portable host-gateway subnet. - #9642 -> `docs/changelog/2026-08-20.mdx`: Record cumulative command documentation catch-up. - #9645 -> `docs/changelog/2026-08-20.mdx`: Record removal of completed advisor rollout compatibility. - #9647 -> `docs/changelog/2026-08-20.mdx`: Record diagnostics for OpenShell deletion handoffs. - #9650 -> `docs/changelog/2026-08-20.mdx`: Record OpenClaw pairing settlement after route changes. - #9652 -> `docs/changelog/2026-08-20.mdx`: Record repaired same-turn advisor submissions. - #9653 -> `docs/changelog/2026-08-20.mdx`: Record llama.cpp authority preservation on resume. - #9654 -> `docs/changelog/2026-08-20.mdx`: Record the schema-owned Microsoft Teams webhook field. - #9655 -> `docs/changelog/2026-08-20.mdx`: Record configured managed vLLM ports. - #9656 -> `docs/changelog/2026-08-20.mdx`: Record interrupted managed vLLM installation recovery. - #9660 -> `docs/changelog/2026-08-20.mdx`: Record catalog-owned vLLM profiles and refreshed llama.cpp pins. - #9663 -> `docs/changelog/2026-08-20.mdx`: Record attested LKG production-image requests. - #9664 -> `docs/changelog/2026-08-20.mdx`: Record corrected documented environment-variable handling. - #9665 -> `docs/changelog/2026-08-20.mdx`: Record retired gateway evidence validation. - #9666 -> `docs/changelog/2026-08-20.mdx`: Record Docker authority across terminal sessions. - #9667 -> `docs/changelog/2026-08-20.mdx`: Record contribution intake and product-decision guidance. - #9669 -> `docs/changelog/2026-08-20.mdx`: Record bounded DGX Spark llama.cpp request bodies. - #9670 -> `docs/changelog/2026-08-20.mdx`: Record managed llama.cpp bridge authentication. - #9671 -> `docs/changelog/2026-08-20.mdx`: Record gateway recreation after Docker network loss. - #9672 -> `docs/changelog/2026-08-20.mdx`: Record bounded WSL Ollama host probes. - #9674 -> `docs/changelog/2026-08-20.mdx`: Record cumulative inference and command documentation catch-up. - #9675 -> `docs/changelog/2026-08-20.mdx`: Record Muse Glimmer vLLM image revision handling. - #9676 -> `docs/changelog/2026-08-20.mdx`: Record the grouped CodeQL Actions update. - #9677 -> `docs/changelog/2026-08-20.mdx`: Record the actions/setup-go 7.0.0 update. - #9678 -> `docs/changelog/2026-08-20.mdx`: Record resumable failed llama.cpp cleanup. - #9681 -> `docs/changelog/2026-08-20.mdx`: Record Docker executable injection in the state-mutation harness. - #9683 -> `docs/changelog/2026-08-20.mdx`: Record Windows Docker path fixtures. - #9684 -> `docs/changelog/2026-08-20.mdx`: Record isolated macOS status subprocess cleanup. - #9686 -> `docs/changelog/2026-08-20.mdx`: Record managed-inference catalog compilation for Portable E2E. - #9687 -> `docs/changelog/2026-08-20.mdx`: Record cumulative uninstall documentation catch-up. - #9688 -> `docs/changelog/2026-08-20.mdx`: Record DCode model-selector loading through tsx. - #9689 -> `docs/changelog/2026-08-20.mdx`: Record bounded docs-parity process starts. - #9690 -> `docs/changelog/2026-08-20.mdx`: Record reduced advisor review protocol failures. - #9691 -> `docs/changelog/2026-08-20.mdx`: Record managed llama.cpp bridge cleanup coverage. - #9692 -> `docs/changelog/2026-08-20.mdx`: Record upstream credential rejection diagnostics. - #9693 -> `docs/changelog/2026-08-20.mdx`: Record cumulative managed vLLM documentation catch-up. - #9694 -> `docs/changelog/2026-08-20.mdx`: Record the pinned Portable rootless Podman runtime. - #9695 -> `docs/changelog/2026-08-20.mdx`: Record owned llama.cpp image publication. - #9697 -> `docs/changelog/2026-08-20.mdx`: Record Windows-host Ollama resume behavior. - #9699 -> `docs/changelog/2026-08-20.mdx`: Record the separate trusted Windows path oracle. - #9702 -> `docs/changelog/2026-08-20.mdx`: Record sandbox bridge cleanup coverage. - #9703 -> `docs/changelog/2026-08-20.mdx`: Record hardened Ollama installer downloads. - #9704 -> `docs/changelog/2026-08-20.mdx`: Record supervised dashboard recovery evidence. - #9706 -> `docs/changelog/2026-08-20.mdx`: Record reused model and reasoning health validation. - #9708 -> `docs/changelog/2026-08-20.mdx`: Record fixed local vLLM profile preservation. - #9711 -> `docs/changelog/2026-08-20.mdx`: Record local registry authority in E2E runs. - #9712 -> `docs/changelog/2026-08-20.mdx`: Record Hermes dashboard migration before gateway health. - #9720 -> `docs/changelog/2026-08-20.mdx`: Record default OpenClaw session admission during uninstall. - #9721 -> `docs/changelog/2026-08-20.mdx`: Record MCP credential republishing after policy binding. - #9722 -> `docs/changelog/2026-08-20.mdx`: Record provider republishing after Docker recreation. - #9724 -> `docs/changelog/2026-08-20.mdx`: Record reclamation of dead Shields lifecycle owners. - #9725 -> `docs/changelog/2026-08-20.mdx`: Record fail-closed unscripted onboarding prompts. - #9729 -> `docs/changelog/2026-08-20.mdx`: Record aligned sandbox launch forward ports. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [x] Existing tests cover changed behavior — justification: `test/changelog-docs.test.ts` validates the dated release-entry contract. - [ ] Tests not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable; documentation-only change. - Station profile/scenario: Not applicable. - Result: Not applicable. - Supporting evidence: Not applicable. ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run validate:pr` passed after refreshing `origin/main` when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts` (7 passed). - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: Not applicable to one prose-only changelog page. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) — passed with 0 errors and the 2 existing Fern warnings. - [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) — the parser-safe MDX SPDX comment is present; native changelog pages intentionally do not use frontmatter. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for v0.0.112. * Documented improvements to managed model runtimes, sandbox recovery, MCP and provider handling, messaging, Shields, and PR Review Advisor. * Added details on release provenance, end-to-end qualification, dependency updates, and documentation alignment. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Managed startup validation rejected the stock Microsoft Teams OpenClaw
webhookobject because the credential-field scanner treated every field with that name as secret-bearing.This change accepts only the schema-owned non-secret object and keeps every other
webhooklocation or shape fail closed.Related Issue
Fixes #9610.
Changes
messaging.plan.agentRender[i].value.webhookonly for the exact Microsoft Teams OpenClaw channel, render, hook, handler, agent, target, and configuration path.portfrom 1 through 65,535 and exactpath/api/messages; reject raw credentials, malformed values, extra fields, ownership mismatches, and the same object elsewhere.Type of Change
Quality Gates
webhookpaths remain rejected before canonicalization.Documentation Writer Review
no-docs-neededDGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailablenpm run typecheck:cli, focused formatting and lint,npm run test:titles:check, andnpm run checks:repositorypassed.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes, command/result:npm run test:changedpassed 7,870 tests and ended with 10 unrelated failures: seven aggregate timeouts, two existing DCode preference-restore assertions, and one Hermes fixture Python compatibility error.npm run docsbuilds without warnings (doc changes only)Signed-off-by: Rebecca Sliter 571084+rsliter@users.noreply.github.com
Summary by CodeRabbit
/api/messagespath are now accepted.