Skip to content

Commit af8bebe

Browse files
dormsternclaude
andcommitted
docs: complete architecture — credential isolation + scoped permissions + audit
The missing narrative: your credentials live in AnchorBrowser, the agent never sees your password, declawed scopes what it can do. Three layers: credential isolation, scoped permissions, audit + kill switch. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 935257c commit af8bebe

1 file changed

Lines changed: 34 additions & 21 deletions

File tree

README.md

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,29 +70,42 @@ That's it. Every `shield.task()` call is policy-checked, audited, and budgeted.
7070

7171
## How It Protects You
7272

73-
Your agent never touches your real browser. Every task goes through a policy checkpoint, then executes in a sandboxed cloud browser.
73+
Your credentials live in AnchorBrowser, not in your code. Your agent never sees your password — it gets a scoped, ephemeral session, and declawed controls what it can do.
74+
75+
**Three layers of protection:**
76+
77+
1. **Credential isolation** — your password stays in AnchorBrowser. The agent gets a pre-authenticated session, never the credentials themselves.
78+
2. **Scoped permissions** — the agent can only do what your policy allows. Read inbox? Yes. Delete contacts? Blocked. It can't go beyond the scope you define.
79+
3. **Audit + kill switch** — every action logged (allowed and blocked). Budget enforced. Instant session destruction when you're done.
7480

7581
```mermaid
76-
flowchart TD
77-
A["Your code calls<br/><b>shield.task('delete all contacts')</b>"] --> B{"<b>Step 1:</b> Check deny patterns<br/><i>*delete*, *send*, *password*</i>"}
78-
B -->|"❌ *delete* matches!"| C["🚫 <b>BLOCKED</b><br/>Returns immediately<br/>Agent never reaches your account"]
79-
B -->|"No deny match"| D{"<b>Step 2:</b> Check allow patterns<br/><i>read*, list*, check*</i>"}
80-
D -->|"✅ Pattern matches"| E["✅ <b>ALLOWED</b>"]
81-
D -->|"No allow match"| F{"<b>Step 3:</b> Default policy"}
82-
F -->|"default: deny"| C
83-
F -->|"default: allow"| E
84-
85-
E --> G["☁️ <b>AnchorBrowser</b><br/>Ephemeral, isolated cloud browser session<br/>Opens real Chrome, executes task<br/>Session auto-expires — nothing persists"]
86-
G --> H["Result returned to your code"]
87-
88-
C --> I["📝 <b>Audit Log</b><br/>Every action logged to shield-audit.jsonl<br/>Allowed AND blocked — append-only"]
89-
H --> I
90-
91-
I --> J["⏱️ <b>Budget &amp; Kill Switch</b><br/>Action count · Time limit · Instant kill"]
92-
93-
style C fill:#d32f2f,color:#fff
94-
style E fill:#388e3c,color:#fff
95-
style G fill:#1565c0,color:#fff
82+
flowchart LR
83+
subgraph setup ["🔑 ONE-TIME SETUP (you, 5 min)"]
84+
direction TB
85+
A["Create AnchorBrowser profile"] --> B["Log into LinkedIn / Gmail manually"]
86+
B --> C["Auth saved — cookies persisted\n<i>Your password never leaves AnchorBrowser</i>"]
87+
end
88+
89+
subgraph runtime ["🤖 EVERY AGENT RUN (automated)"]
90+
direction TB
91+
D["Agent calls\n<b>shield.task('check inbox')</b>"] --> E{"<b>declawed</b>\nPolicy check\n<i>allow: read*, list*\ndeny: *delete*, *send*</i>"}
92+
E -->|"✅ Allowed"| F["AnchorBrowser opens\nephemeral session\nwith YOUR profile\n<i>(already logged in)</i>"]
93+
E -->|"❌ Blocked"| G["Stopped + logged\nAgent never reaches\nyour account"]
94+
F --> H["Task executes in\nisolated cloud browser"]
95+
H --> I["Result returned\nto agent"]
96+
G --> J["📝 Audit log\n⏱️ Budget tracking"]
97+
I --> J
98+
end
99+
100+
subgraph never ["🚫 AGENT NEVER GETS"]
101+
K["Your password"]
102+
L["Direct browser access"]
103+
M["Unscoped permissions"]
104+
end
105+
106+
style G fill:#d32f2f,color:#fff
107+
style F fill:#388e3c,color:#fff
108+
style C fill:#1565c0,color:#fff
96109
```
97110

98111
## CLI

0 commit comments

Comments
 (0)