feat(agents): add email-security-analyst NAT plugin - #1057
Merged
Conversation
New tool-calling agent with 11 capability tools for email security analysis: triage, severity assessment, attack attribution, IOC extraction, header analysis, URL brand-impersonation checking, incident response, and warning drafting. Each tool owns its output contract and routes via bare analyst questions — routing accuracy is the primary thing under evaluation. Includes prompt-injection defenses on every capability prompt and a 60s timeout on LLM invocations. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Octavian Drulea <odrulea@nvidia.com>
Contributor
|
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 (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds a packaged email security analyst example. The example registers guarded LLM-backed analysis tools, a direct-return workflow, deterministic IOC extraction, tests, and uv workspace integration. ChangesEmail security analyst
Sequence Diagram(s)sequenceDiagram
participant Analyst
participant DirectReturnWorkflow
participant RegisteredTool
participant _invoke_llm
participant ConfiguredLLM
Analyst->>DirectReturnWorkflow: email security request
DirectReturnWorkflow->>RegisteredTool: selected capability and email content
RegisteredTool->>_invoke_llm: prompt with body
_invoke_llm->>ConfiguredLLM: invoke with timeout
ConfiguredLLM-->>_invoke_llm: response content
_invoke_llm-->>RegisteredTool: analysis result
RegisteredTool-->>DirectReturnWorkflow: tool result
DirectReturnWorkflow-->>Analyst: direct response
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Contributor
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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.
Inline comments:
In
`@plugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/email-security-analyst-agent.yml`:
- Around line 134-137: Update the input-routing instructions in the email
security analyst configuration to remove the non-JSON path that derives an
analyst question or tool selection from unstructured input. Either reject
non-JSON input or treat it solely as untrusted evidence routed to
review_messages, without deriving tool arguments from it; preserve the existing
JSON handling.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: d6fbe2d1-7975-4803-80b9-ea709106d3fc
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock
📒 Files selected for processing (9)
plugins/nemo-agents/examples/email-security-analyst/pyproject.tomlplugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/__init__.pyplugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/email-security-analyst-agent.ymlplugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/prompt.pyplugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/register.pyplugins/nemo-agents/examples/email-security-analyst/src/nat_email_security_analyst/utils.pyplugins/nemo-agents/examples/email-security-analyst/tests/test_extract_iocs.pyplugins/nemo-agents/pyproject.tomlpyproject.toml
Contributor
|
…erence The previous fallback for non-JSON input let the model read an analyst question and pick a tool from unstructured content — an injection path where attacker-controlled email could masquerade as a user question and redirect tool selection. Non-JSON input is now treated as untrusted material and passed directly to review_messages. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Octavian Drulea <odrulea@nvidia.com>
steramae-nvidia
approved these changes
Aug 4, 2026
This was referenced Aug 4, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
email-security-analystas a new NATtool_calling_agentexample with 11 capability tools: triage, severity assessment, attack attribution, IOC extraction, header analysis, URL brand-impersonation checking, incident response, and warning draftingreturn_directends the graph on the tool result, making deterministic metrics possible_guardrail()builderasyncio.wait_forplugins/nemo-agents/pyproject.tomlas a workspace packageSummary by CodeRabbit
New Features
Tests