Skills governance
Use the concrete policy engine for invocations, consent, limits and audit.
The dedicated policy engine ships as @openagentid/skills-policy@0.1.1 on npm and openagent-skills-policy@0.1.0 on crates.io. They parse policy/skills manifests and evaluate invocation context. The unified SDK's small SkillsPolicy interface is a separate adapter boundary; it does not automatically enable every rule in the dedicated engine.
Policy dimensions
| Rule | Purpose |
|---|---|
| Allow/deny | Gate a named skill |
| Rate limit | Bound invocation frequency |
| Argument constraints | Validate invocation arguments |
| Time windows | Restrict permitted time periods |
| Consent | Require the configured approval |
| Audit level | Select none, hash or full payload recording |
TypeScript engine
@openagentid/skills-policy@0.1.1 is public on npm. It exports SkillsPolicy, InvocationContext, Did, SkillsManifest, typed errors, a rate limiter and audit helpers. This is an ESM package with its own dependency contract; it is not the small facade interface exported by @openagentid/sdk.
Run the complete policy example. It installs the exact package, records an allowed invocation, refuses an unlisted skill and verifies the resulting audit chain. The example configures policy only; it does not authenticate its illustrative DID or invoke a remote tool. The application must derive invocation context from verified state and require the policy decision before executing the action.
Audit and enforcement
A hash chain can verify linkage relative to retained history. It does not make in-memory receipts durable or prove every invocation was recorded. Configure persistence and redaction. Full argument capture may contain sensitive data; choose it deliberately.
See exact TypeScript policy exports, Rust policy modules, and framework hooks.