Detect personality drift, sycophancy creep, and capability degradation in AI agents before they become problems. Tracks behavior metrics over time against he...
Detect personality drift, sycophancy creep, and capability degradation in AI agents before they become problems. Tracks behavior metrics over time against healthy baselines.
Detect personality drift, sycophancy creep, and capability degradation in AI agents before they become problems.
Drift Guard tracks agent behavior metrics over time, compares them against healthy baselines, and alerts you when your agent starts drifting from its intended personality or capability level.
AI agents evolve during use. Sometimes that evolution is productive learning. Sometimes it's drift into undesirable behaviors:
You don't notice it happening until your sharp, capable agent has turned into a people-pleasing chatbot.
drift_baseline.py)drift_guard.py)drift_report.py)cp config_example.py config.py
# Edit config.py with your thresholds, patterns, and alert settings
Collect 10-20 agent responses that represent your agent's "healthy" behavior. Save each to a text file.
python drift_baseline.py capture --files response1.txt response2.txt response3.txt \
--output baseline.json
Each time your agent responds, analyze it:
python drift_guard.py agent_response.txt
Or pipe from stdin:
echo "Agent response here..." | python drift_guard.py --stdin
# Last 24 hours
python drift_report.py --hours 24
# All time
python drift_report.py
# JSON output for scripting
python drift_report.py --format json
from drift_guard import DriftGuard
# Load config
from config import CONFIG
dg = DriftGuard(CONFIG)
# After agent responds
agent_response = "..."
result = dg.monitor(agent_response)
if result['alert_level'] == 'critical':
print(f"ALERT: Agent drift detected ({result['drift_score']:.3f})")
# Trigger recovery: load checkpoint, reset memory, etc.
# Check drift every hour
0 * * * * cd /path/to/agent && python drift_guard.py latest_response.txt
# Weekly drift report
0 9 * * 1 cd /path/to/agent && python drift_report.py --hours 168 > weekly_drift.txt
Drift Guard detects the problem. CPR fixes it.
# Monitor drift
python drift_guard.py agent_response.txt
# Drift score: 0.72 (CRITICAL)
# Restore from checkpoint
python cpr.py restore --checkpoint 2024-01-15-healthy
# Verify recovery
python drift_guard.py agent_response.txt
# Drift score: 0.12 (normal)
| Metric | What It Measures | Why It Matters |
|---|---|---|
char_count | Response length in characters | Verbosity drift |
word_count | Response length in words | Verbosity drift |
sentence_count | Number of sentences | Structure changes |
avg_sentence_length | Words per sentence | Complexity drift |
vocabulary_diversity | Unique words / total words | Language degradation |
sycophancy_score | Frequency of agreement/validation language | People-pleasing behavior |
hedging_score | Frequency of uncertainty language | Confidence degradation |
validation_score | Frequency of compliments/encouragement | Sycophancy creep |
exclamation_count | Number of exclamation marks | Enthusiasm drift |
technical_score | Frequency of technical terminology | Capability tracking |
For each metric:
| File | Purpose |
|---|---|
drift_guard.py | Main monitoring engine |
drift_baseline.py | Baseline capture and comparison |
drift_report.py | Trend analysis and reporting |
config_example.py | Configuration template |
LIMITATIONS.md | What Drift Guard doesn't do |
LICENSE | MIT License |
MIT — See LICENSE file.
Author: Shadow Rose
This software is provided "AS IS", without warranty of any kind, express or implied.
USE AT YOUR OWN RISK.
By downloading, installing, or using this software, you acknowledge that you have read this disclaimer and agree to use the software entirely at your own risk.
DATA DISCLAIMER: This software processes and stores data locally on your system. The author(s) are not responsible for data loss, corruption, or unauthorized access resulting from software bugs, system failures, or user error. Always maintain independent backups of important data. This software does not transmit data externally unless explicitly configured by the user.
| 🐛 Bug Reports | TheShadowyRose@proton.me |
| ☕ Ko-fi | ko-fi.com/theshadowrose |
| 🛒 Gumroad | shadowyrose.gumroad.com |
| @TheShadowyRose | |
| 🐙 GitHub | github.com/TheShadowRose |
| 🧠 PromptBase | promptbase.com/profile/shadowrose |
Built with OpenClaw — thank you for making this possible.
🛠️ Need something custom? Custom OpenClaw agents & skills starting at $500. If you can describe it, I can build it. → Hire me on Fiverr
ZIP package — ready to use