docs: update What's New page (2026-04-17)#236
Conversation
Analyzed 8 commits since last check (1114870..1c3f5db): - 4 housekeeping commits (agent state updates) - 2 documentation commits (already addressed gaps) - 1 version bump commit - 1 bug fix commit (Windows path.sep fix) No documentation gaps found. The Windows compatibility fix in commit 31c675c is an internal implementation detail that doesn't require user-facing documentation updates. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Analyzed 2 commits since last check (1c3f5db..8818ab1): - 1 documentation audit state update (ce7d60e) - 1 engineer agent housekeeping commit (8818ab1) No documentation gaps found. Both commits are internal maintenance (agent state updates) and don't require user-facing documentation changes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Analyzed 3 commits since last check (8818ab1..984faf0): - 2 engineer agent housekeeping commits (1e472a2, 984faf0) - 1 documentation audit state update (65da0b2) No documentation gaps found. All commits are internal maintenance (agent state tracking) and don't require user-facing documentation changes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Analyzed 3 commits since last check (984faf0..20e46a7): - 2 engineer agent housekeeping commits (53fcb3a, 20e46a7) - 1 documentation audit state update (03e0f70) No documentation gaps found. All commits are internal maintenance (agent state tracking) and don't require user-facing documentation changes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Status: 🟢 GREEN - Path traversal strengthened, dependencies require triage ## Key Findings - ✅ Path traversal protection strengthened (commit 31c675c) - 🔴 NEW Finding #13: npm dependency vulnerabilities escalated - 2 CRITICAL, 15 HIGH, 24 MODERATE (up from 0/4/4) - Requires immediate triage - ✅ Discord file attachments have comprehensive security controls -⚠️ Finding #12 (web API auth) unchanged - needs documentation -⚠️ Finding #11 (OAuth credentials) unchanged ## Audit Metrics - Commits reviewed: 22 (5f79021..54bff77) - Scanner duration: 7.2 seconds - Security-relevant changes: 6 of 22 commits (27%) - New questions: Q15 (file scanning), Q16 (voice retention) ## Coverage Status All areas current except dependencies (STALE - triage needed) Next audit: ~2026-04-18 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Analyzed 4 commits since last check (20e46a7..cf053b8): - 2 engineer agent housekeeping commits (54bff77, cf053b8) - 1 security audit commit (c7c4378) - 1 documentation audit state update (e0cddc9) No documentation gaps found. All commits are internal maintenance (agent state tracking and security audit results) and don't require user-facing documentation changes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Analyzed 2 commits since last check (cf053b8..c03edcb): - 1 engineer agent housekeeping commit (c03edcb) - 1 documentation audit state update (2e1923e) No documentation gaps found. All commits are internal agent maintenance and state tracking that don't require user-facing documentation changes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Committing leftover artifacts from 2026-04-13 audit before running daily audit for 2026-04-14. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added Windows path separator fix entry for @herdctl/core@5.10.1 release. Analyzed 26 commits since last update (2026-03-13). Most were automated housekeeping and docs audit commits. One user-facing fix: - Windows path separator validation fix for cross-platform compatibility Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe PR updates state files and documentation across multiple agents (changelog, docs, engineer, security) to reflect recent audit runs, maintenance activities, new security findings, and system improvements including a Windows path separator fix. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying herdctl with
|
| Latest commit: |
c033c9f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://d744e45a.herdctl.pages.dev |
| Branch Preview URL: | https://changelog-auto-update-2026-0-wr48.herdctl.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
agents/security/scans/history.txt (1)
1-1: Clarify the FAIL vs. GREEN status indicatorsLine 1 shows
FAILas the status but ends withGREEN, which appears contradictory. Based on the context snippet fromagents/security/intel/2026-04-11.md, the overall audit status was "🟢 GREEN" despite the scanner returning FAIL due to npm vulnerabilities. Consider using a consistent format that clarifies this distinction (e.g., "SCANNER: FAIL | AUDIT: GREEN") to avoid confusion.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@agents/security/scans/history.txt` at line 1, The entry "2026-04-11 | 54bff77 | 7.2s | FAIL | 2 critical, 15 high, 24 moderate npm vulns; path traversal strengthened | GREEN" conflates scanner result and overall audit indicator; update the code that generates this line so it writes both statuses explicitly (e.g., "SCANNER: FAIL | AUDIT: GREEN") instead of a single token, locate the generator that emits the "FAIL" token and the trailing "GREEN" token (search for the exact string fragments " | FAIL | " and " | GREEN" in the history generation logic and/or the audit summary assembly used with agents/security/intel/2026-04-11.md), and change the formatting to emit two labeled fields ("SCANNER" and "AUDIT") populated from the scanner result and the audit summary respectively.agents/security/intel/2026-04-11.md (1)
160-162: Optional: Consider adding language specifiers to fenced code blocks.Some fenced code blocks lack language identifiers. While not incorrect, adding them improves consistency and rendering:
-``` +```text {workingDir}/{download_dir}/{messageUUID}/{attachmentId}-{filename}Similar for the vulnerability growth block at lines 399-402 (use `text` or `diff` as appropriate). Also applies to: 399-402 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@agents/security/intel/2026-04-11.mdaround lines 160 - 162, Add language
specifiers to the fenced code blocks that currently lack them: update the block
containing the path string
"{workingDir}/{download_dir}/{messageUUID}/{attachmentId}-{filename}" to use a
language tag (e.g.,text) and likewise add an appropriate language tag (e.g.,text or ```diff) to the "vulnerability growth" fenced block referenced around
lines 399-402 so rendering and consistency are improved.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In@agents/security/STATE.md:
- Line 45: Update the low-tier question count to match the listed items: change
the "Low: 3" summary to "Low: 4" (the entries are Q9, Q10, Q11, Q16), and then
reconcile the frontmatteropen_questionsvalue so the total of medium + low
equals that number (either updateopen_questionsto 11 or adjust the listed
questions/counts to arrive at 10); ensure the visible "Low: X" line and the
frontmatteropen_questionsare consistent with the actual question IDs.In
@agents/security/summaries/latest.md:
- Line 1: The symlink named latest.md currently points to an absolute path;
replace it with a relative symlink so it remains valid after cloning. Update the
symlink target for latest.md to ./2026-04-13-summary.md (remove the leading
/opt/... prefix), e.g. recreate the symlink using a relative target (ln -s
./2026-04-13-summary.md latest.md) or update your repository tooling to write
the relative path; ensure the new latest.md points to the local
2026-04-13-summary.md file and commit the changed symlink.
Nitpick comments:
In@agents/security/intel/2026-04-11.md:
- Around line 160-162: Add language specifiers to the fenced code blocks that
currently lack them: update the block containing the path string
"{workingDir}/{download_dir}/{messageUUID}/{attachmentId}-{filename}" to use a
language tag (e.g.,text) and likewise add an appropriate language tag (e.g.,text or ```diff) to the "vulnerability growth" fenced block referenced around
lines 399-402 so rendering and consistency are improved.In
@agents/security/scans/history.txt:
- Line 1: The entry "2026-04-11 | 54bff77 | 7.2s | FAIL | 2 critical, 15 high,
24 moderate npm vulns; path traversal strengthened | GREEN" conflates scanner
result and overall audit indicator; update the code that generates this line so
it writes both statuses explicitly (e.g., "SCANNER: FAIL | AUDIT: GREEN")
instead of a single token, locate the generator that emits the "FAIL" token and
the trailing "GREEN" token (search for the exact string fragments " | FAIL | "
and " | GREEN" in the history generation logic and/or the audit summary assembly
used with agents/security/intel/2026-04-11.md), and change the formatting to
emit two labeled fields ("SCANNER" and "AUDIT") populated from the scanner
result and the audit summary respectively.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro **Run ID**: `24fc4e7e-f8f3-47ae-9064-25090ab80a72` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 3662d1851523cf49da28bfa6583408905ae35f60 and c033c9f6bd19c6e768d8076aa8cb73cb089d8c88. </details> <details> <summary>📒 Files selected for processing (12)</summary> * `agents/changelog/state.md` * `agents/docs/state.md` * `agents/engineer/conversations.md` * `agents/engineer/state.md` * `agents/security/STATE.md` * `agents/security/intel/2026-04-11.md` * `agents/security/intel/FINDINGS-INDEX.md` * `agents/security/scans/history.txt` * `agents/security/summaries/2026-04-11-summary.md` * `agents/security/summaries/2026-04-13-summary.md` * `agents/security/summaries/latest.md` * `docs/src/content/docs/whats-new.md` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
| - Medium: 5 (Q1 webhook auth, Q4 log injection, Q5 config merge, Q7 container user, Q8 SDK escaping) | ||
| - Low: 2 (Q3 container name chars, Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF) | ||
| - Medium: 7 (Q1 webhook auth, Q4 log injection, Q5 config merge, Q7 container user, Q8 SDK escaping, Q13 encodedPath, Q15 file scanning) | ||
| - Low: 3 (Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF, Q16 voice retention) |
There was a problem hiding this comment.
Fix the question count inconsistency.
Line 45 states "Low: 3" but then lists 4 questions (Q9, Q10, Q11, Q16). The count should be updated to match.
🔢 Proposed fix
-- Low: 3 (Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF, Q16 voice retention)
+- Low: 4 (Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF, Q16 voice retention)Note: This would make the total open questions 7 medium + 4 low = 11, which doesn't match the frontmatter value of open_questions: 10. Please verify the correct total and update the frontmatter accordingly.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Low: 3 (Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF, Q16 voice retention) | |
| - Low: 4 (Q9 rate limiting, Q10 MCP security, Q11 GitHub SSRF, Q16 voice retention) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@agents/security/STATE.md` at line 45, Update the low-tier question count to
match the listed items: change the "Low: 3" summary to "Low: 4" (the entries are
Q9, Q10, Q11, Q16), and then reconcile the frontmatter `open_questions` value so
the total of medium + low equals that number (either update `open_questions` to
11 or adjust the listed questions/counts to arrive at 10); ensure the visible
"Low: X" line and the frontmatter `open_questions` are consistent with the
actual question IDs.
| @@ -0,0 +1 @@ | |||
| /opt/herdctl/agents/security/summaries/2026-04-13-summary.md No newline at end of file | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if other similar pointer files exist and what path format they use
fd -t f 'latest' agents/security/summaries/
# Check if the referenced file exists at a relative path
ls -la agents/security/summaries/2026-04-13-summary.md 2>/dev/null || echo "File not found at relative path"Repository: edspencer/herdctl
Length of output: 157
🏁 Script executed:
#!/bin/bash
# First, check what's in the latest.md file
echo "=== Content of latest.md ==="
cat agents/security/summaries/latest.md
echo -e "\n=== File type and details ==="
file agents/security/summaries/latest.md
ls -la agents/security/summaries/latest.md
echo -e "\n=== List all files in directory ==="
ls -la agents/security/summaries/
echo -e "\n=== Search for other 'latest' files in the repo ==="
fd -t f 'latest' --full-pathRepository: edspencer/herdctl
Length of output: 1424
Replace the absolute symlink with a relative path
The latest.md symlink points to an absolute path (/opt/herdctl/agents/security/summaries/2026-04-13-summary.md). Change it to a relative path like ./2026-04-13-summary.md so the symlink remains valid when the repository is cloned to different locations.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@agents/security/summaries/latest.md` at line 1, The symlink named latest.md
currently points to an absolute path; replace it with a relative symlink so it
remains valid after cloning. Update the symlink target for latest.md to
./2026-04-13-summary.md (remove the leading /opt/... prefix), e.g. recreate the
symlink using a relative target (ln -s ./2026-04-13-summary.md latest.md) or
update your repository tooling to write the relative path; ensure the new
latest.md points to the local 2026-04-13-summary.md file and commit the changed
symlink.
Summary
@herdctl/core@5.10.1(March 17, 2026)Analysis
Analyzed 26 commits since last update on 2026-03-13. Most were automated housekeeping commits and docs audit updates. One user-facing release:
New Entry Added
Windows Path Separator Fix - Fixed path traversal validation to use platform-specific path separators instead of hardcoded forward slashes, ensuring correct validation on Windows systems.
Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit