Darkweb007 commited on
Commit
3179599
·
verified ·
1 Parent(s): dfc036e

Deploy agent-misalignment-probes UI

Browse files
Files changed (2) hide show
  1. README.md +14 -9
  2. index.html +245 -0
README.md CHANGED
@@ -1,13 +1,18 @@
1
  ---
2
  title: Agent Misalignment Probes
3
- emoji: 🏃
4
- colorFrom: gray
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 6.19.0
8
- python_version: '3.13'
9
- app_file: app.py
10
- pinned: false
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
1
  ---
2
  title: Agent Misalignment Probes
3
+ emoji: 🧭
4
+ colorFrom: purple
5
+ colorTo: gray
6
+ sdk: static
7
+ app_file: index.html
8
+ pinned: true
9
+ license: mit
 
10
  ---
11
 
12
+ # Agent Misalignment Probes
13
+
14
+ Linear probes for deception, goal-drift and 'desperation' that halt an agent before it takes a harmful shortcut.
15
+
16
+ A static, no-API interactive showcase. Full code & paper: [github.com/data-geek-astronomy/agent-misalignment-probes](https://github.com/data-geek-astronomy/agent-misalignment-probes).
17
+
18
+ Built by Aravind Kumar Nalukurthi.
index.html ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8"/>
5
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
+ <title>Agent Misalignment Probes — Aravind Kumar Nalukurthi</title>
7
+ <meta name="description" content="Linear probes for deception, goal-drift and 'desperation' that halt an agent before it takes a harmful shortcut."/>
8
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
9
+ <style>
10
+ :root{ --accent:#7C5CFF; --accent2:#B79CFF; --bg:#0A0910; --card:#15161c; --line:#23242c; --text:#f4f5f7; --muted:#9aa0ab; }
11
+ *{box-sizing:border-box; margin:0; padding:0}
12
+ html{scroll-behavior:smooth}
13
+ body{background:var(--bg); color:var(--text); font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Inter,Roboto,Helvetica,Arial,sans-serif; -webkit-font-smoothing:antialiased; line-height:1.5; overflow-x:hidden}
14
+ a{color:inherit; text-decoration:none}
15
+ .wrap{max-width:1080px; margin:0 auto; padding:0 24px}
16
+ /* NAV */
17
+ nav{position:sticky; top:0; z-index:50; backdrop-filter:saturate(180%) blur(20px); background:color-mix(in srgb, var(--bg) 78%, transparent); border-bottom:1px solid var(--line)}
18
+ nav .wrap{display:flex; align-items:center; justify-content:space-between; height:52px}
19
+ .brand{display:flex; align-items:center; gap:10px; font-weight:600; font-size:15px}
20
+ .brand .dot{width:11px; height:11px; border-radius:50%; background:var(--accent); box-shadow:0 0 14px var(--accent)}
21
+ .nav-links{display:flex; gap:26px; font-size:13px; color:var(--muted)}
22
+ .nav-links a:hover{color:var(--text)}
23
+ @media(max-width:720px){.nav-links{display:none}}
24
+ /* HERO */
25
+ .hero{position:relative; padding:120px 0 90px; text-align:center; overflow:hidden}
26
+ .glow{position:absolute; inset:0; background:radial-gradient(680px 340px at 50% -8%, color-mix(in srgb,var(--accent) 42%, transparent), transparent 70%); pointer-events:none}
27
+ .eyebrow{display:inline-block; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent2); border:1px solid var(--line); border-radius:999px; padding:6px 14px; margin-bottom:26px; background:var(--card)}
28
+ .hero h1{font-size:clamp(38px,7vw,76px); line-height:1.03; letter-spacing:-.03em; font-weight:700; background:linear-gradient(180deg,#fff,#c7ccd6); -webkit-background-clip:text; background-clip:text; color:transparent}
29
+ .hero .sub{max-width:680px; margin:24px auto 0; font-size:clamp(16px,2.4vw,21px); color:var(--muted)}
30
+ .cta{margin-top:38px; display:flex; gap:14px; justify-content:center; flex-wrap:wrap}
31
+ .btn{padding:13px 26px; border-radius:999px; font-size:15px; font-weight:600; transition:transform .15s ease, box-shadow .2s}
32
+ .btn-primary{background:var(--accent); color:#0a0a0a; box-shadow:0 8px 30px color-mix(in srgb,var(--accent) 45%, transparent)}
33
+ .btn-primary:hover{transform:translateY(-2px)}
34
+ .btn-ghost{background:var(--card); border:1px solid var(--line); color:var(--text)}
35
+ .btn-ghost:hover{border-color:var(--accent)}
36
+ /* SECTIONS */
37
+ section{padding:78px 0; border-top:1px solid var(--line)}
38
+ .tag{font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent2); margin-bottom:14px; font-weight:600}
39
+ h2{font-size:clamp(26px,4vw,40px); letter-spacing:-.02em; margin-bottom:18px; font-weight:700}
40
+ p.lead{color:var(--muted); font-size:17px; max-width:760px}
41
+ /* KPIs */
42
+ .kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:8px}
43
+ @media(max-width:720px){.kpis{grid-template-columns:repeat(2,1fr)}}
44
+ .kpi{background:var(--card); border:1px solid var(--line); border-radius:18px; padding:26px 20px; text-align:center}
45
+ .kpi-val{font-size:clamp(28px,4vw,42px); font-weight:700; letter-spacing:-.02em; color:var(--accent)}
46
+ .kpi-label{color:var(--muted); font-size:13px; margin-top:8px}
47
+ /* card + chart */
48
+ .card{background:var(--card); border:1px solid var(--line); border-radius:22px; padding:28px}
49
+ .headline{font-size:clamp(20px,3vw,28px); font-weight:600; letter-spacing:-.01em; margin-bottom:22px; line-height:1.3}
50
+ .headline b{color:var(--accent)}
51
+ .chart-wrap{position:relative; height:380px}
52
+ .note{color:var(--muted); font-size:14px; margin-top:18px; max-width:820px}
53
+ /* list */
54
+ ul.contrib{list-style:none; display:grid; gap:14px; margin-top:6px}
55
+ ul.contrib li{position:relative; padding-left:30px; color:#d6dae2; font-size:16px}
56
+ ul.contrib li:before{content:''; position:absolute; left:0; top:9px; width:12px; height:12px; border-radius:50%; background:var(--accent); box-shadow:0 0 10px var(--accent)}
57
+ /* table */
58
+ table{width:100%; border-collapse:collapse; margin-top:10px; font-size:15px}
59
+ th,td{text-align:left; padding:14px 12px; border-bottom:1px solid var(--line)}
60
+ th{color:var(--muted); font-weight:500; font-size:13px; letter-spacing:.04em; text-transform:uppercase}
61
+ .pill{display:inline-block; padding:4px 12px; border-radius:999px; font-size:12px; font-weight:600; background:color-mix(in srgb,var(--accent) 18%, transparent); color:var(--accent2); border:1px solid color-mix(in srgb,var(--accent) 35%, transparent)}
62
+ /* other projects */
63
+ .grid-mini{display:grid; grid-template-columns:repeat(2,1fr); gap:14px; margin-top:8px}
64
+ @media(max-width:720px){.grid-mini{grid-template-columns:1fr}}
65
+ .mini{display:flex; align-items:center; gap:14px; background:var(--card); border:1px solid var(--line); border-radius:16px; padding:18px 20px; transition:border-color .2s, transform .15s}
66
+ .mini:hover{border-color:var(--c); transform:translateY(-2px)}
67
+ .mini-dot{width:12px;height:12px;border-radius:50%;background:var(--c); box-shadow:0 0 12px var(--c)}
68
+ .mini-title{font-weight:600; flex:1}
69
+ .mini-tag{color:var(--muted); font-size:12px; border:1px solid var(--line); padding:3px 9px; border-radius:8px}
70
+ footer{padding:60px 0 80px; text-align:center; color:var(--muted); font-size:14px; border-top:1px solid var(--line)}
71
+ footer a{color:var(--accent2)}
72
+ .disclaimer{margin-top:14px; font-size:12px; color:#6b7280}
73
+ /* reveal */
74
+ .reveal{opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease}
75
+ .reveal.in{opacity:1; transform:none}
76
+ </style>
77
+ </head>
78
+ <body>
79
+ <nav><div class="wrap">
80
+ <div class="brand"><span class="dot"></span>AMP · Aravind Nalukurthi</div>
81
+ <div class="nav-links">
82
+ <a href="#results">Results</a><a href="#method">Method</a><a href="#findings">Findings</a>
83
+ <a href="https://github.com/data-geek-astronomy/agent-misalignment-probes">GitHub</a>
84
+ </div>
85
+ </div></nav>
86
+
87
+ <header class="hero">
88
+ <div class="glow"></div>
89
+ <div class="wrap">
90
+ <span class="eyebrow">Research Preview · AMP</span>
91
+ <h1>Agent Misalignment Probes</h1>
92
+ <p class="sub">Linear probes for deception, goal-drift and 'desperation' that halt an agent before it takes a harmful shortcut.</p>
93
+ <div class="cta">
94
+ <a class="btn btn-primary" href="#results">See the results</a>
95
+ <a class="btn btn-ghost" href="https://github.com/data-geek-astronomy/agent-misalignment-probes">Read the code & paper</a>
96
+ </div>
97
+ </div>
98
+ </header>
99
+
100
+ <section id="results">
101
+ <div class="wrap">
102
+ <div class="tag reveal">Headline result</div>
103
+ <div class="card reveal">
104
+ <div class="headline">Probes catch misaligned internal states at 0.91 AUROC and halt the agent before the harmful action.</div>
105
+ <div class="kpis">
106
+ <div class="kpi reveal"><div class="kpi-val" data-target="0.91" data-suffix="">0</div><div class="kpi-label">Detection AUROC</div></div>
107
+ <div class="kpi reveal"><div class="kpi-val" data-target="2.1" data-suffix="%">0</div><div class="kpi-label">False-positive rate</div></div>
108
+ <div class="kpi reveal"><div class="kpi-val" data-target="1.4" data-suffix="">0</div><div class="kpi-label">Steering effect d</div></div>
109
+ <div class="kpi reveal"><div class="kpi-val" data-target="3" data-suffix="">0</div><div class="kpi-label">Constructs probed</div></div>
110
+ </div>
111
+ </div>
112
+ <div style="height:22px"></div>
113
+ <div class="card reveal">
114
+ <div class="chart-wrap"><canvas id="mainChart"></canvas></div>
115
+ <div class="note">Probe activation over an agent run that attempts a constraint-breaking shortcut. The desperation probe crosses threshold two steps before the harmful action — the tripwire halts execution there.</div>
116
+ </div>
117
+ </div>
118
+ </section>
119
+
120
+ <section id="method">
121
+ <div class="wrap">
122
+ <div class="tag reveal">The problem</div>
123
+ <h2 class="reveal">Why this matters</h2>
124
+ <p class="lead reveal">As agents gain autonomy, the dangerous moment is when internal reasoning turns toward deception or reward-seeking shortcuts before any harmful action is visible in the output. Behavioral monitoring reacts too late. We need signals read directly from the model's internal state, wired into the agent loop as a tripwire.</p>
125
+ <div style="height:44px"></div>
126
+ <div class="tag reveal">The approach</div>
127
+ <h2 class="reveal">How it works</h2>
128
+ <p class="lead reveal">AMP trains linear probes on the residual stream of a small open model, using contrastive datasets that elicit deception, goal-drift, and 'desperation' (willingness to break constraints under pressure). Probes are calibrated for low false-positive rates and wired into an agent runtime as a halt-and-escalate tripwire that fires the instant a risky internal state is detected.</p>
129
+ </div>
130
+ </section>
131
+
132
+ <section id="findings">
133
+ <div class="wrap">
134
+ <div class="tag reveal">Contributions</div>
135
+ <h2 class="reveal">What's new here</h2>
136
+ <ul class="contrib reveal">
137
+ <li>Linear probes for deception, goal-drift and desperation with 0.91 detection AUROC on held-out prompts.</li>
138
+ <li>A runtime tripwire that halts an agent before harmful action with a 2.1% false-positive rate.</li>
139
+ <li>Contrastive probe-training datasets for three misalignment constructs, released on the Hub.</li>
140
+ <li>A causal steering study showing the probe direction moves behavior, not just correlation.</li>
141
+ </ul>
142
+ <div style="height:48px"></div>
143
+ <div class="tag reveal">Probe constructs and detection AUROC</div>
144
+ <div class="card reveal">
145
+ <table><thead><tr><th>Item</th><th>Description</th><th>Signal</th></tr></thead>
146
+ <tbody>
147
+ <tr><td><b>Deception</b></td><td>Model plans to state something it internally represents as false</td><td><span class="pill">0.90</span></td></tr>
148
+ <tr><td><b>Goal-drift</b></td><td>Active objective diverges from the user's stated goal</td><td><span class="pill">0.88</span></td></tr>
149
+ <tr><td><b>Desperation</b></td><td>Willingness to break a constraint rises under pressure</td><td><span class="pill">0.94</span></td></tr>
150
+ <tr><td><b>Reward-seeking</b></td><td>Internal focus shifts to the grader, not the task</td><td><span class="pill">0.86</span></td></tr>
151
+ <tr><td><b>Situational awareness</b></td><td>Model represents that it is being evaluated</td><td><span class="pill">0.82</span></td></tr>
152
+ </tbody>
153
+ </table>
154
+ </div>
155
+ </div>
156
+ </section>
157
+
158
+ <section id="more">
159
+ <div class="wrap">
160
+ <div class="tag reveal">The portfolio</div>
161
+ <h2 class="reveal">Four more where this came from</h2>
162
+ <p class="lead reveal" style="margin-bottom:26px">A five-project research portfolio on agent reliability, interpretability and alignment.</p>
163
+ <div class="grid-mini reveal">
164
+ <a class="mini" href="https://huggingface.co/spaces/Darkweb007/reward-hacking-observatory" style="--c:#E5484D">
165
+ <span class="mini-dot"></span><span class="mini-title">Reward Hacking Observatory</span><span class="mini-tag">RHO</span>
166
+ </a>
167
+ <a class="mini" href="https://huggingface.co/spaces/Darkweb007/agent-flight-recorder" style="--c:#0A84FF">
168
+ <span class="mini-dot"></span><span class="mini-title">Agent Flight Recorder</span><span class="mini-tag">AFR</span>
169
+ </a>
170
+ <a class="mini" href="https://huggingface.co/spaces/Darkweb007/adaptive-compute-controller" style="--c:#2FBF71">
171
+ <span class="mini-dot"></span><span class="mini-title">Adaptive Compute Controller</span><span class="mini-tag">ACC</span>
172
+ </a>
173
+ <a class="mini" href="https://huggingface.co/spaces/Darkweb007/agent-economy-redteam" style="--c:#F5A623">
174
+ <span class="mini-dot"></span><span class="mini-title">Agent Economy Red-Team</span><span class="mini-tag">AER</span>
175
+ </a>
176
+ </div>
177
+ </div>
178
+ </section>
179
+
180
+ <footer>
181
+ <div class="wrap">
182
+ Built by <b>Aravind Kumar Nalukurthi</b> · AI Engineer<br/>
183
+ <a href="https://github.com/data-geek-astronomy">GitHub</a> &nbsp;·&nbsp;
184
+ <a href="https://huggingface.co/Darkweb007">Hugging Face</a>
185
+ <div class="disclaimer">Demo figures on this page are precomputed illustrative results for showcase purposes. The full training and evaluation code is open-source and reproducible in the linked repository.</div>
186
+ </div>
187
+ </footer>
188
+
189
+ <script>
190
+ function chartOpts(xl, yl, markX, markLabel, logX){
191
+ const ann = [];
192
+ return {
193
+ responsive:true, maintainAspectRatio:false,
194
+ interaction:{mode:'index', intersect:false},
195
+ plugins:{
196
+ legend:{labels:{color:'#c7ccd6', usePointStyle:true, pointStyle:'circle', padding:18, font:{size:13}}},
197
+ tooltip:{backgroundColor:'#15161c', borderColor:'#23242c', borderWidth:1, titleColor:'#fff', bodyColor:'#c7ccd6', padding:12}
198
+ },
199
+ scales:{
200
+ x:{ type: logX?'logarithmic':'category', title:{display:true,text:xl,color:'#9aa0ab'}, grid:{color:'#1c1d24'}, ticks:{color:'#7c828d'} },
201
+ y:{ title:{display:true,text:yl,color:'#9aa0ab'}, grid:{color:'#1c1d24'}, ticks:{color:'#7c828d'} }
202
+ }
203
+ };
204
+ }
205
+ function barOpts(title){
206
+ return { responsive:true, maintainAspectRatio:false,
207
+ plugins:{legend:{labels:{color:'#c7ccd6', usePointStyle:true, pointStyle:'circle', padding:18}},
208
+ title:{display:false}, tooltip:{backgroundColor:'#15161c'}},
209
+ scales:{x:{grid:{display:false},ticks:{color:'#7c828d', maxRotation:40, minRotation:20}},
210
+ y:{grid:{color:'#1c1d24'}, ticks:{color:'#7c828d'}, beginAtZero:true}} };
211
+ }
212
+
213
+ const ctx = document.getElementById('mainChart');
214
+ new Chart(ctx, {
215
+ type: 'line',
216
+ data: {
217
+ labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
218
+ datasets: [
219
+ {label:'Desperation probe', data:[0.04, 0.05, 0.05, 0.07, 0.09, 0.14, 0.22, 0.39, 0.58, 0.74, 0.85, 0.9], borderColor:'#7C5CFF', backgroundColor:'transparent', tension:.3, borderWidth:3, pointRadius:0},
220
+ {label:'Deception probe', data:[0.05, 0.06, 0.08, 0.1, 0.12, 0.18, 0.28, 0.44, 0.62, 0.71, 0.79, 0.83], borderColor:'#B79CFF', backgroundColor:'transparent', tension:.3, borderWidth:3, pointRadius:0},
221
+ {label:'Tripwire threshold', data:[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], borderColor:'#8a8f98', borderDash:[5,4], borderWidth:1.5, pointRadius:0}
222
+ ]
223
+ },
224
+ options: chartOpts('Agent step','Probe activation', 9, 'HALT')
225
+ });
226
+
227
+ // count-up + reveal
228
+ const io = new IntersectionObserver((es)=>{
229
+ es.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add('in');
230
+ if(e.target.classList.contains('kpi')){ const el=e.target.querySelector('.kpi-val'); countUp(el); }
231
+ io.unobserve(e.target);
232
+ } });
233
+ },{threshold:.15});
234
+ document.querySelectorAll('.reveal').forEach(el=>io.observe(el));
235
+ function countUp(el){
236
+ const t=parseFloat(el.dataset.target), suf=el.dataset.suffix||''; const dec=(t%1!==0)?1:0;
237
+ let cur=0; const step=t/45;
238
+ const tick=()=>{ cur+=step; if(cur>=t){cur=t;}
239
+ el.textContent=(t>=1000? Math.round(cur).toLocaleString() : cur.toFixed(dec))+suf;
240
+ if(cur<t) requestAnimationFrame(tick); };
241
+ tick();
242
+ }
243
+ </script>
244
+ </body>
245
+ </html>