adapter-msaf — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited adapter-msaf (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The @weave_protocol/adapter-msaf package enforces WARD.md policies inside Microsoft Agent Framework (MSAF) via its middleware pipeline. Unlike the Claude Code and Antigravity adapters which use config-file hooks, this adapter is a library that the user registers programmatically in their agent setup.
WardDeniedError) to catch and handle WARD denials in their codeMSAF middleware is registered programmatically, not via a config file. So:
init writes to disk; instead it prints the integration snippetThe user must paste a small code snippet into their MSAF agent setup. The CLI helps with init (snippet generator), status (verify policy resolution), and test (dry-run a call).
import { WardMiddleware } from '@weave_protocol/adapter-msaf';
const ward = new WardMiddleware({
// wardPath: './WARD.md' // or auto-resolve from cwd
// failMode: 'closed' // or 'open' (default)
// toolMappings: { ... } // custom tool name → capability
// onAllow: (call, result) => { ... }
// onDeny: (call, result) => { ... }
});
agent.useFunctionMiddleware(ward.functionMiddleware());wardPath option (explicit)wardSource option (raw markdown)$WEAVE_WARD_PATH<cwd>/WARD.md<cwd>/.weave/WARD.md<cwd>/.msaf/WARD.mdweave-msaf init [--language=ts|csharp|python] # print integration snippet
weave-msaf status # show active WARD + mappings
weave-msaf test <tool> [--input=JSON] # dry-run a tool callCovers MSAF's local agent runtime tools, Copilot SDK patterns, and Claude Code SDK integration (since MSAF can use them as a sub-harness):
ShellExec/Bash/RunCommand → shell_exec (with command heuristic)FileWrite/FileEdit/Edit/Write → file_writeFileRead/Read → file_readFileDelete → file_deleteListDirectory → file_listHttpRequest/WebFetch → http_requestSendEmail → send_emailPostMessage → send_messageCreateIssue → create_issueSubagent → subagentWARD.md can use either MSAF tool names or generic capabilities. Custom mappings via toolMappings option.
Bash command heuristic includes Azure credential paths (~/.azure/) — the realistic threat vector for MSAF users.
| Situation | Action |
|---|---|
| User asks how to enforce WARD in their MSAF agent | Show init snippet + WardMiddleware construction |
| User wants to test policy without running the agent | weave-msaf test <tool> |
| User reports a tool call was blocked | Suggest catching WardDeniedError |
| User wants emergency override capability | Use onDeny callback returning true |
| User wants stricter failure mode | failMode: 'closed' |
| User uses non-standard tool names | toolMappings: { MyTool: { capability: '...' } } |
@weave_protocol/ward — the policy format being enforced@weave_protocol/adapter-claudecode — same WARD.md, enforced in Claude Code@weave_protocol/adapter-antigravity — same WARD.md, enforced in Antigravity@weave_protocol/hundredmen — enforces the same WARD.md on MCP servers@weave_protocol/cli — weave init scaffolds projects with a WARD.mdonDeny callback explicitly so the decision is logged.failMode: 'closed' so a missing policy is loud.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.