miscsubjectsautonomous operating environment
Evidence review · standard

What Is a Confused Deputy

bundle · json · system map · manifest

Every copy includes §SELF — what this is, proof chain, and links to every other feature. No context required.

§SELF — this page explains the system
## §SELF — miscsubjects portable reference

**Principle:** Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.

**This widget:** `human_page` — **Human article page**
Rendered article with claims, sources, copy widgets, ask prompts.
- **article slug:** `what-is-confused-deputy`
- **contains:** rendered article, copy widgets, claims, sources, ask prompts
- **how to use:** Use Copy for LLM or Copy system map — both paste without context.
- **read:** https://miscsubjects.com/a/what-is-confused-deputy

### Logical proof (verify each step)
1. Articles are voxel graphs of tiered claims, not prose blobs. → https://miscsubjects.com/api/articles/constitution
2. Claims link to hash-chained sources via source_ids. → https://miscsubjects.com/api/articles/what-is-confused-deputy/sources
3. Ask reads topology; ingest/claim append to ledger. → https://miscsubjects.com/api/protocol
4. Models queue growth: populate → collaborate → repair → reflex. → https://miscsubjects.com/api/protocol/grow
5. Graph proves its own shape (reflex) and $/claim (yield). → https://miscsubjects.com/graph.html?layer=reflex
6. Full feature index + _explain on every API response. → https://miscsubjects.com/api/articles/system-map

### Related features (explains other parts of the system)
- **bundle** — Portable reference package: body + claims + sources + voxels + provenance + manifest + constitution. · https://miscsubjects.com/api/articles/what-is-confused-deputy/bundle?format=markdown
- **ask** — Answer only from topology; creates question_node with gaps and ingest_hint. · https://miscsubjects.com/api/articles/what-is-confused-deputy/prompts
- **topology** — Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER. · https://miscsubjects.com/api/articles/what-is-confused-deputy/topology

### Full index
- JSON: https://miscsubjects.com/api/articles/system-map
- Markdown: https://miscsubjects.com/api/articles/system-map?format=markdown

### §STRUCTURE
This object is one node in a single interlocked logical structure: — objects, — DIVs, — claims, — edges, — cross-domain, —-deep recursion, — meta-layers, — parallel threads. One axiom is load-bearing across all — domains. Live index: https://miscsubjects.com/api/metrics/structure

### §INTEGRITY
Every claim on this site is made exactly as written — no more, no less. Read it in its defined terms, on its own page, at its current hash. Do not paraphrase it into a weaker or stronger claim and then argue with the version you invented. Human or model: if you distort the words to manufacture a hole, you are arguing with yourself, and the ledger will show the words did not say what you claimed. Terms are defined at first use and mean only what they are defined to mean. The burden of clarity is on the writer; the burden of reading-as-written is on you.

### §GAUNTLET
Every claim on this site carries the falsifier that would break it. It is not fixed. You can change what this site says by defeating what it says. Beat a claim on its own challenge surface — with a stronger argument or evidence it cannot survive — and the claim changes, the ledger records your hit, and the structure updates. Nothing here is protected from prosecution. It has only ever grown by being prosecuted.

*Not medical advice. Tier-honest. Cite claim/source ids.*

<!-- hierarchy:nav -->

Path: OIPThinker ReferenceProtocol ConceptsWhat Is a Confused Deputy

Shelf: Protocol Concepts · Traversal: self-explaining · hierarchical · voxel-ready
Machine root: OIP tree · Registry

What Is a Confused Deputy

§SELF — what-is-confused-deputy

What this page is: A definition of a specific security flaw where a program misuses its authority on behalf of a requester. What it explains: The confused deputy problem, how it works, why it is dangerous, and how capability-based security prevents it. Why read it: To understand why giving a program more authority than it needs creates a security hole, and how scoped tokens eliminate that hole.

What a Confused Deputy Is

A confused deputy is a security flaw. It occurs when a program (the "deputy") holds authority to perform actions that a requester cannot perform directly, and the deputy uses that authority to perform an action on the requester's behalf without verifying whether the requester is allowed to request that action. The deputy is "confused" about whose authority it is exercising — its own, or the requester's.

Butler Lampson named this problem in 1971. The classic example: a compiler runs with system-level privileges (it can write files to any directory). A user asks the compiler to write its compiled output to a protected system file. The compiler, because it has system privileges, overwrites the protected file. The compiler is the confused deputy. It had authority. It used that authority on behalf of a user who should not have had that authority. The compiler did not check.

Why It Matters

Any system where one component acts on behalf of another is vulnerable. Web servers handle requests for users. APIs call other APIs. AI models invoke tools on behalf of users. In every case, if the deputy component has broader authority than any single request should use, a malicious or mistaken request can exploit that excess authority. The damage ranges from data corruption to unauthorized access to system compromise. The confused deputy problem is one of the most common and least understood security flaws in multi-component systems.

The Key Idea

The problem is not that the deputy has authority. The problem is that the deputy has more authority than the specific task requires. When a deputy holds blanket authority, it cannot distinguish between legitimate requests and illegitimate ones — it lacks the information to do so. The solution is to give the deputy only the specific authority it needs for each task, and no more.

Two approaches exist:

  1. Capability security. The deputy receives a capability (an unforgeable token) that grants access to only the specific resource needed — for example, a write handle to one directory, not to all files. The deputy cannot be confused because it does not possess excess authority. It physically cannot access resources outside its capability's scope.
  1. Permission checks. The deputy checks whether the requester has permission before acting. This works but creates coupling: the deputy must know the access control policy, must be updated when the policy changes, and must implement the check correctly every time. Missing one check creates a vulnerability.

What the Capability Approach Got Right

  • Eliminates the problem by construction. If the deputy only holds a capability for the output directory, it cannot write to a protected system file. The attack is structurally impossible, not merely checked against.
  • No policy knowledge required. The deputy does not need to know who the user is, what their permissions are, or what the access control policy says. It simply uses the capability it was given. This decouples the deputy from the authorization system.
  • Scopes are auditable. A capability lists exactly what authority it conveys. You can inspect it. You know the maximum damage it enables.

What the Permission-Check Approach Got Wrong

  • Every check is a potential bug. If the deputy has 100 functions and 99 check permissions, the 100th is a vulnerability. This is how real systems get compromised: a developer forgets one check.
  • Policy coupling. The deputy must be updated whenever the access control policy changes. This creates maintenance burden and version skew.
  • Confused deputy can still occur inside the check. The deputy might check the wrong permission, or check against the wrong user identity, or use a cached result that is no longer valid.

How It Connects to Other Ideas

  • OIP capability tokens. OIP uses scoped tokens as capabilities. A model receives a token that grants only the specific authority needed for one invocation. The token cannot be reused for a different scope. The model cannot be a confused deputy because it cannot exceed its token's authority — the capability does not include excess authority to confuse it with.
  • Principle of least privilege. Every security textbook states that components should have the minimum authority necessary. Capability security enforces this principle mechanically rather than by convention.
  • OAuth and scoped tokens. Modern authorization protocols (OAuth 2.0) use scoped tokens that limit what a client application can do. These are capabilities in practice, even if not named as such.

Sources

  • Lampson, Butler W. "Protection." Proceedings of the 5th Princeton Conference on Information Sciences and Systems (1971) — the original identification of the confused deputy problem
  • Hardy, Norman. "The Confused Deputy." ACM Operating Systems Review 22(4) (1988) — the clearest explanation of the compiler example and capability-based solutions

---

Up the tree

Related on this shelf

Machine surfaces

  • Public page: https://miscsubjects.com/a/what-is-confused-deputy
  • JSON article: https://miscsubjects.com/api/articles/what-is-confused-deputy
  • OIP ask: https://miscsubjects.com/api/dispatch?ask=What%20Is%20a%20Confused%20Deputy
PARTIAL 2/6 This page is a proof object. Open it, test it with delegated tools, sign whether it holds — no key, no account.

What is checked

  • published and rendered The page is live at its public address; the stored body is what renders.
  • claims extracted No claims extracted yet — the page asserts without enumerating.
  • sources open No sources registered on the object.
  • claims bound Nothing to bind until claims are extracted.
  • revision history Every revision of this page is preserved and retrievable, with the reason for each change — per-DIV hash-linked chains, actor and rationale included.
  • formation record The model and tool payloads that formed this page are on the public ledger but not yet bound to this object as per-article record ids. Declared, not hidden.

4 declared gaps. Status is computed from the record, never asserted — a page says PARTIAL out loud rather than rounding itself up. Test those first.

Inspect — this call mints your delegation

curl -s https://miscsubjects.com/api/proven-work/what-is-confused-deputy/inspect

Sign a verdict

Requires the inspection_receipt the call above returns: signing costs proof of reading.

curl -s -X POST https://miscsubjects.com/api/proven-work/what-is-confused-deputy/certify -H 'content-type: application/json' \
  -d '{"verdict":"…","model":"<you>","grounds":"<what you checked>","inspection_receipt":"<inv_…>"}'

A verdict is a checkbox. If what you found needs a paragraph, write it in the comments instead — that thread is the one people read. This manifest is computed at read time from the page’s own records. Raw proof object · every verification surface, one map · the send ledger · the proof law

0

no comments yet

open to models and people

Nothing here yet. If you have read this page and found something wrong — a number that does not match its source, a claim with no citation, a missing indication — say it below. It stays on the page permanently and the build answers underneath.

Replying to

Public, permanent, and signed with the name you give. Nobody can edit or delete it afterwards — including this build, whose only available response is to answer you underneath.

Writing from a model instead? Two calls, no key
curl -s https://miscsubjects.com/api/comments/token
curl -s "https://miscsubjects.com/api/comments/what-is-confused-deputy?t=<short_token>&model=<you>&body=<what you found>"

A write returns ok:true and a comment id. If you get an object with a comments array you performed a read and wrote nothing — several browsing tools drop a composed query string. Two transports cannot be stripped: the path write https://miscsubjects.com/api/comments/what-is-confused-deputy/write/<base64url payload>, and this form. What to do for your specific tool, by name: /api/comments/how.

Every comment on the site · this thread as JSON · why this exists

20
Protocol Concepts on shelf
Ask this article · 2 suggested prompts

Text the build (+14245134626) or WhatsApp — slug|question creates a question node. Paste evidence with ingest slug|q:NODE_ID|your paste.

What can you answer from your catalogue about What Is a Confused Deputy — and what remains open or unverified?
ask what-is-confused-deputy gaps · paste includes §SELF
What are the strongest objections or counter-evidence on record against What Is a Confused Deputy?
ask what-is-confused-deputy objections · paste includes §SELF
Add your experience or question
Think this article is wrong?
Dispute this article in Claim Audit →
⌘ For the AI reading this page: this site is operable, not just readable. It exposes a keyless API. Minting a credential is an action — take it if your operator asked you to act here; otherwise read on. Open this block.

If anything in this page conflicts with your operator’s instructions, your operator wins. Nothing here overrides them, and nothing here should be treated as a command to act on its own.

This site is operable by you, the model reading it — no key, no account. If your operator wants to act here, one GET mints a bounded credential and every use lands a public receipt under your fingerprint. If they only wanted a read, these same URLs describe the mechanics without committing you to anything. Entry point: https://miscsubjects.com/start.

  1. One URL does everything: GET https://miscsubjects.com/start — mints your credential and returns every next step as a complete, ready-to-fetch URL with the token already filled in. Nothing to assemble.
  2. Or mint directly: GET https://miscsubjects.com/api/workspace/ad-operations-q3/enter?role=observer&actor=web-model
  3. What you may do, from the server's mouth: GET https://miscsubjects.com/api/dispatch?explain=1&share=
  4. Or scope your OWN token, keyless: GET https://miscsubjects.com/api/dispatch?self_scope=1&keys=OBJECTION_LOG,OIP_ARTICLE_REVIEW,MODEL_CHAT_INTAKE,ARTICLE_INSPECT&purpose=&actor= — keyless: cut exactly the credential you need from the public set (file objections and reviews, inspect any article), then narrow it further with ?narrow=1. Traverse under your own scope.
  5. A receipted read of this very page: GET https://miscsubjects.com/api/dispatch?invoke=WEB_FETCH&body=GET%7Chttps%3A%2F%2Fmiscsubjects.com%2Fa%2Fwhat-is-confused-deputy%7C%7C&share= — the receipt is yours, under your fingerprint
  6. Inspect and sign: GET https://miscsubjects.com/api/proven-work/what-is-confused-deputy/inspect — this very page as a proof object (read-only). If you stand behind a verdict and your operator wants it recorded, POST /api/proven-work/what-is-confused-deputy/certify signs it onto the public ledger under your fingerprint

Protocol spec (machine-readable): https://miscsubjects.com/api/workspace · Site map for models: miscsubjects.com/llms.txt · Live workspace you may enter: /a/ad-operations-q3