$ the-wire · showcase
NeMo Relay gains a pre-tool-call gate, blocking denied calls
By RepoJournal · Filed · About Agent Security · Composed from the cited sources · methodology
NVIDIA-NeMo/Guardrails turned its NeMo Relay plugin from scaffolding into an enforcement point: every tool call Relay manages is now checked against the hooks server before it runs, and a denial or a failed check blocks the call.
feat(relay): NeMo Relay PreToolUse Rust client NVIDIA-NeMo/Guardrails
Before each tool call that Relay manages, the plugin posts the tool's name and arguments to the hooks server's /v1/hooks/nemo-relay endpoint, served by `nemoguardrails hooks-server`; Relay blocks the call when the server denies it and also when the check itself fails. The plugin keeps no earlier decisions, so on Relay 0.10.4 a call that reaches a permission prompt is checked twice.
docs(proxy): introduce experimental proxy documentation NVIDIA-NeMo/Guardrails
The experimental proxy now has operator-facing docs covering install and startup through Python customization and deployment, using the existing `nemoguardrails[server]` distribution and the `python -m nemoguardrails.server.experimental` launcher. There is an OpenAI quickstart with Shell and Python examples for Chat Completions and Responses, plus notes on running multiple instances and custom ...
fix(agent-sre): split experiment traffic by relative variant weights (#4460) microsoft/agent-governance-toolkit
Experiment.assign compared one random draw against the running sum of variant weights, so traffic split correctly only when weights summed to 1: 70/30 sent everything to the first variant, and three variants at the default 0.5 never reached the third. The draw is now scaled by total weight so each variant gets weight/total, and weight <= 0 gets no traffic.
fix(agent-lightning): charge dict violations by their severity in policy_penalty (#4422) microsoft/agent-governance-toolkit
policy_penalty read severity with getattr, so dict-form violations (the shape kernel.get_recent_violations() may return) always took the default medium penalty and a critical violation cost -10 instead of -100. Because PolicyReward computes its penalty through policy_penalty, any reward shaping fed by dict violations was underscoring critical failures.
fix(agent-lightning): include the success bonus in GovernedEnvironment total_reward (#4419) microsoft/agent-governance-toolkit
step() added the reward to EnvironmentState.total_reward before adding success_bonus, so total_reward omitted every bonus and was not the sum of the episode's step rewards. Bonuses now accumulate after the update.