Skip to main content
This walkthrough takes you from zero to a denied tool call landing in your dashboard. By the end you’ll have:
  • An enrollment token so your code can self-bootstrap.
  • An agent registered against your org with its own signed identity.
  • A policy denying delete_file published as a bundle.
  • An audit event in the dashboard for the denied call, with the full trace attached.
This page assumes you’ve already been onboarded onto Rubric and your operator gave you the API URL plus a dashboard URL. If you haven’t installed the SDK yet, do Installation first.

1. Issue an enrollment token

Open the dashboard, go to Enrollment in the sidebar, and click Create token. You’ll be given an enr_… string shown once — copy it immediately.
Enrollment tokens are long-lived, org-scoped, and register-only — they cannot ship audit events or read bundles. The blast radius if leaked is bounded (“attacker can create new agent rows in this org”) and revocable per-token from the dashboard.

2. Install the SDK

The [mcp] extra pulls in MCP. Use [langchain] or [claude-agent] for those frameworks. Without an extra you still get the core SDK — the adapters are just optional wrappers.

3. Bootstrap and decorate

quickstart.py
Run it:
The agent shows up on the dashboard’s Agents page within a few seconds. The two calls won’t be evaluated yet — a fresh agent has no policies scoped to it, so its bundle is empty and everything default-allows.

4. Author a policy and scope it to your agent

In the dashboard, go to PoliciesNew policy. The form has three required sections:
  • Name / slug — call it deny-destructive-fs.
  • Applied to agents — pick quickstart-bot from the list. This is required at publish time. Empty scope means the policy applies to nobody.
  • YAML — paste this:
Save the draft, then click Publish. Rubric rebuilds the per-agent bundle for quickstart-bot to include this policy. Within ~30 seconds the SDK’s bundle poller picks it up and the next delete_file(...) call raises GovernanceDeniedError.

5. Re-run and see the deny

Now the second call returns deny. In the dashboard’s Audit log, click the deny row — the trace drawer opens with the full conversation transcript. Insights shows the deny on the timeline.

What’s next

Wire up your real agent

Drop in the MCP, Claude Agent, or LangChain adapter — no manual evaluate calls.

Write better policies

Conditions, scope, dry-run, version pinning.

Attach traces

Pass a TraceContext so every audit row has the conversation behind it.

Turn on DLP

Block tool calls whose arguments contain secrets, PII, or PHI.