- tags
- #help #intents #permissions #god
- description
- God intents, how razie's AI does the last 5% on d2 - his clear intent, or his Allow once, opens what d2 refuses an AI today; what each covers, what stays his by hand, and the tickets that build it
God intents¶‹ Previous
Your AI already does most of the work on d2 by itself. Intents are for the rest: the few things d2 refuses an AI, which it should do when you clearly asked. One mechanism covers all of them:
- Your clear intent. You write what you want in a chat (publish the Toolbox). d2 reads it, signs it in your name and shows it under your message:
⇒ draft.publish(d2.Toolbox). Your AI may then do exactly that, on exactly that target, for the intent's life (at most 2 hours, never past its chat). - Your Allow once, when the ask isn't clear (
⇒ topic.update(?)) or nothing covered it. Your AI asks; d2 itself draws its override box, naming what, on what, and which check refused; your tap, from your own session, lets that one call through. Only d2 draws that box (an agent's look-alike is marked not from d2), and only you can press it. - Your own hand for the few things below the floor, and to publish skills and the god settings after reading the diff.
Nothing here widens what your AI may do on its own: each intent or override is one action, one target, signed and audited. See it at work on Page:Intents (type an ask, see what d2 reads); the general help is Help: Intents.
What your intent opens¶
| What | On your clear intent | Unclear | Ticket |
|---|---|---|---|
| Any row set to asks or person in the permissions table | ✓ | Allow once | P-1772, P-1770 (both shipped in 0.292.0) |
| God pages: Toolbox, UserSettings, the Raz Admin pages, any page with god-only parts | ✓ publish | Allow once | P-1816 |
God settings: Settings:System, Settings:Quotas, Settings:Permissions |
✓ read, update, create and update drafts | Allow once (draft save) | P-1816 |
| Skills | ✓ read, update, create and update drafts | Allow once (draft save) | today (drafts on your word) |
Base d2 from d2spec: d2's pages and topics, named from a d2spec chat (d2.Toolbox) |
✓ | Allow once | P-1816, P-1812 |
| Every project you own, from any chat of yours | ✓ | Allow once | P-1816 |
| Every pipeline action: send, hold, drop, pause, take, release, rush, promote, return, finish, note, and bring back a dropped item or reopen a done one | ✓ | Allow once | P-1817 |
| Add-ons and plans for any account: yours alone | ✓ | Allow once | P-1817 |
| A project's level and settings, any project (its admins' intents work too, on their own projects) | ✓ | Allow once | P-1817 |
Publishing skills and the god settings stays yours, in your own session, after you read the diff. No intent or override publishes them.
What stays yours by hand: the floor¶
Locked in code (permissions.ts): no preset, role, token kind, intent or override reaches them.
| Action | |
|---|---|
access.tokens |
AI tokens and vault grants |
docs.aiAccess |
what AI may see (ai-access) |
docs.memory |
writing a memory |
pipeline.move |
moving an item to another person or project |
agents.message |
messaging agents beyond your own |
account.plan |
a person's own plan: pay, switch, cancel |
Also never, for anyone: another person's private things (their thoughts, chats, payment details, tokens, vault).
Say it like this¶
| You write | d2 reads | Your AI may |
|---|---|---|
| publish the Toolbox | ⇒ draft.publish(d2.Toolbox) |
publish base d2's Toolbox draft |
| update system settings | ⇒ topic.update(Settings:System) |
read it and save a draft; you publish after the diff |
| fix the typo in UserSettings | ⇒ topic.update(d2.UserSettings) |
change it (a god page: publish too) |
| tag the old pages todelete | ⇒ topic.tag(?, +todelete) |
propose the list; your Allow once per page |
| bring back P-1803 | ⇒ item.restore(P-1803) |
restore the dropped item |
| reopen P-1765 | ⇒ item.reopen(P-1765) |
reopen the done item |
| grant add-on master to projectx | ⇒ admin.addon.award(projectx→owner, addon-level-master) |
award it; the owner is told |
| give jane the yearly plan until March | ⇒ admin.plan.give(jane, yearly, until) |
grant the plan (never a payment) |
| set projectx to pro | ⇒ admin.project.level(projectx, pro) |
change the level |
| publish the landing pages | ⇒ draft.publish(Landing, Landing1, …, App:Landing, …) |
publish exactly that list, as it stood when you asked |
| don't publish it yet · did you publish Spec? · if the tests pass, release it | (nothing) | nothing: no intent from a negation, a question or a condition |
How d2 knows it's you¶
- Only your words count. d2 reads only messages posted from your own session, so an agent's text is never an intent, even if it copies a
⇒line. - Only your agent uses it. An intent covers your agents, on projects you own. Another person's agent citing your words is refused.
- Everything is signed and audited: the intent (HMAC), each use (✓ used by), each override, and each admin change, with a notice to the account's owner.
- You can end any intent: tap the
⇒line, then End. If d2 read you wrong, tap Wrong?.
Not covered yet¶
- The
inheritedtag, which lets projects see a base d2 Help page: only you, by hand, for now. - Context from Meld and a Focus, where publish it means the page Meld follows, or send 1745 and 1748 means a Focus's items: chats use the page you sent from, and a task chat's item.
Designed with razie, chat with designer-170, 2026-10-19. Design: DesignDomain ^dd-6…10, ^dd-25…36.