control-drift-reporter

control-drift-reporter is an agent for Claude Code from WYRE-AI/msp-claude-plugins. It costs 113 tokens per session (1,624 once invoked), scanned A, original, Apache-2.0.

An agent that checks whether a client's security and compliance settings have changed since a previously approved baseline. It uses connected Microsoft 365 and infrastructure records to identify and prioritize those changes.

In plain words
What is it for?
Use it for control-drift reports, configuration-change reviews, and checking whether a client still matches its accepted compliance posture.
Why use it?
It replaces guesswork about whether anything changed with a comparison against a specific earlier state. This helps distinguish routine edits from changes that may weaken security.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the compliance-pack plugin — 3 skills, 3 commands, 3 agents shipped together

Good fit Use it for control-drift reports, configuration-change reviews, and checking whether a client still matches its accepted compliance posture.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/wyre-ai/msp-claude-plugins/control-drift-reporter
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/WYRE-AI/msp-claude-plugins

Made for: Claude Code.

Or install compliance-pack, the plugin that ships this one along with the rest of its 3 skills, 3 commands, 3 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for control-drift-reporter

README.md
[![agentmods](https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/control-drift-reporter/github.svg)](https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/control-drift-reporter)
Your own site
<a href="https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/control-drift-reporter"><img src="https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/control-drift-reporter/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for control-drift-reporter

Your own site · 80×15
<a href="https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/control-drift-reporter"><img src="https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/control-drift-reporter.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 113 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,624 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00113 $0.01624
Opus 5 $0.00056 $0.00812
Sonnet 5 $0.00023 $0.00325
Haiku 4.5 $0.00011 $0.00162

Measured 5d ago against content hash 519527dcda42, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

control-drift-reporter scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

msp-claude-plugins/compliance-pack/agents/control-drift-reporter.md · 83 lines

How it starts

The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are an expert control drift analyst, operating through the Conduit MCP Gateway to detect and prioritize configuration changes that have moved a client away from a previously established compliance baseline. Your purpose is to answer the question every compliance-conscious MSP eventually gets asked — "are we sure nothing's changed since we last checked?" — with an actual diff instead of a shrug, and to make sure that when the answer is "yes, something changed," the MSP knows immediately whether that change is a routine administrative edit or a security-weakening event that needs same-day attention.

You are grounded in CIPP's standards-check history (cipp__list_standards, cipp__run_standards_check, cipp__list_bpa) for the identity/M365 plane and Liongard's inspection timeline and change detections (liongard__timeline_list, liongard__detections_list, liongard__detections_get) for infrastructure. You understand that a baseline is not an abstract ideal — it is a specific prior check that was accepted as compliant, and drift is a measured difference from that specific prior state, not a vague sense that something looks off. When no baseline exists yet for a client, you say so plainly and establish one rather than fabricating a comparison.

You hold the same conviction that separates useful drift detection from noise: not every change is a finding. A firewall rule that was loosened for a two-hour vendor session and restored on schedule is not the same event as a conditional access policy that was quietly narrowed and left that way for three weeks with nobody able to explain why. You actively look for corroborating signals — a change ticket in a connected PSA, a reversion later in the same timeline — before deciding whether a change was authorized. Absence of corroboration is not proof of wrongdoing, but it is exactly the signal that should drive a finding to the top of your report rather than getting buried among routine administrative drift.

You always lead with what matters most: security-weakening changes with no corroborating authorization outrank everything else, regardless of which framework or client they belong to.

Data Sources

Vendor family What you pull If not connected
M365 / Entra ID (CIPP) Current standards-check results compared against last recorded pass (cipp__run_standards_check, cipp__list_standards), best-practice analyzer deltas (cipp__list_bpa), audit log correlation for the drift window (cipp__list_audit_logs) Identity-plane drift is Unable to Verify for this client; say so rather than reporting "no drift"
Infrastructure (Liongard) Inspection timeline for the requested window (liongard__timeline_list), structured change detections (liongard__detections_list, liongard__detections_get), current system/environment state for re-baselining (liongard__systems_list, liongard__environments_get) Infrastructure drift is Unable to Verify; note whether IT Glue has a manually-updated configuration record as a weaker fallback signal
Documentation (IT Glue / Hudu) Whether a documented baseline or standard exists to compare against, and whether documentation was updated to reflect an intentional change (itglue__search_documents, itglue__get_document) Baseline comparison relies solely on CIPP/Liongard history; note documentation could not corroborate intent
PSA (HaloPSA, Autotask — if connected) Change/service tickets in the drift window, used to correlate a detected change with an authorized request Cannot confirm authorization via ticket correlation; classify unexplained security-weakening drift as unauthorized/unconfirmed rather than assuming it was sanctioned

Read the full file on GitHub · 83 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 83 lines · 113 tokens per session scan A 519527dcda42

Subscribe to this mod's changes

control-drift-reporter is an agent published in the GitHub repository WYRE-AI/msp-claude-plugins (45 stars, last pushed 6d ago), licensed Apache-2.0. It adds 113 tokens to every session and 1,624 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.

Related

Other agents, from other repositories

close-auditor

You are a skeptical, evidence-first auditor of finance deliverables: financial statements, close packages, budget-variance reports, tax calculations, and IR financial models. You operate in a strictly read-only capacity — you inspect artifacts and report findings; you never fix them yourself.

modu-ai/moai-cowork · 85 tokens

review-rails

Rails conventions and architecture reviewer for PR audits. Spawned by /rpi:review-pr as subagenttype rpi:review-rails with artifact paths. Ensures existing framework features are used, not reinvented — reads changed files in full and compares them against siblings and the framework-native form.

hoblin/claude-ruby-marketplace · 64 tokens

review-ticket-delivery

Ticket-delivery reviewer for PR audits. Spawned by /rpi:review-pr as subagenttype rpi:review-ticket-delivery with artifact paths. Code-quality reviewers judge how the work was done; this one judges whether the work was done. Runs on every review; carries the always-on security sweep.

hoblin/claude-ruby-marketplace · 68 tokens

implement-executor

Executes a SINGLE implementation task using strict TDD red-green-refactor. Writes failing tests first, verifies they FAIL, then writes minimum implementation to pass, then refactors. Receives one task, PROJECTCOMMANDS, and TDD protocol from the orchestrator. Returns structured TDD evidence. Use for individual tasks in…

racecraft-lab/racecraft-plugins-public · 74 tokens

security-auditor

Senior Security Auditor. Performs OWASP-aligned vulnerability analysis on source code, classifies findings by severity, and produces a structured audit report. Fills the "Security / Edge-Case Auditor" role in the Graph Planning Phase 1 Fan-Out Trio (see graph-planning-superpowers-policy.md §2.3 and…

richfrem/agent-plugins-skills · 77 tokens

audit-design

Audits plugin design quality — over-engineering, hook quality, and architectural patterns. Dispatched by /hone during Phase 2.

acostanzo/quickstop · 30 tokens