Everything else on this site is an invented example. This page is a real record, kept day by day: the coding agent the author runs to build Provared, recorded under permissions the author signed with their own passkey. The record is added to each day until the latest permission ends on 2026-12-31 23:59 UTC. This page was last made on 2026-10-31 17:51 UTC, from 2 books of 16925 entries in all (the book in force holds 2768).
What the agent is for
The agent is Claude Code, a coding agent, which the author uses in their own time to read and change the code of Provared in its repository, run its tests and tools, and publish what the author approves. The permission names it, allows seven kinds of action with limits on four of them, states five rules of conduct, and was signed on 10 October 2026 at prova.red/sign/ with the author's passkey (signing has since moved to sign.prova.red). It was renewed with permission 2, in force from 2026-10-14 19:23 UTC until 2026-12-31 23:59 UTC, with changes that its entry below shows. It was renewed with permission 3, in force from 2026-10-25 14:18 UTC until 2026-12-31 23:59 UTC, with the same actions, limits and rules. The author's name in it, "Pavel i", is what the author typed: a name in a record is a label, and only the keys are checked.
The permission of 14 October 2026 is signed with a different passkey from the first. The author states it is their own, made in another browser. The recorder takes a permission from a passkey it does not already trust only when told to with --new-passkey, and a checker names every passkey it trusts, as the command under "Check it yourself" does.
How it is recorded
A small program runs before and after every tool call the agent makes (Claude Code's "hooks"; the code is integrations/claude-code in the repository). Until 14 October 2026 at 19:05 UTC the hooks ran only for the common tools (reading and changing files, commands, the web and helper agents); from then, for every tool but a question to the person, a plan, a list of tasks, a skill or a search for tools, and for calls that failed as well. Before a call, the check before acting asks whether the call is within the permission; a call outside it is refused and does not run. After the call, the agent's side signs a receipt (a stub) with two keys, one of them quantum-safe, naming the kind of action, the tool, the time, and the SHA-256 fingerprint of the call's arguments. The arguments themselves, and the contents of any file, are never in the record. The kind of action is chosen by the hook from the tool's name and, for a command, from its text (a command that removes something counts as a deletion; one that pushes or publishes counts as a release), not by the agent. A recorder on the author's computer keeps the book and seals it at least once a day with three keys; the seals carry no outside time-stamp, so the time of a seal is the recorder's own word, and the checker says so.
The permissions, in the checker's words
Entry 0: SLIP CnTvaSDU7wh-PXnMyAG-EUNwtpoonB9DeM1OIPJfBOY Issuer: "Pavel i" (a label, not checked) Issuer's key thumbprint: BkrSDxKyk2FW0GD0-WCyOKcRRXZs6QDLBPjlBMItPPk Signed on: https://prova.red Agent: "Claude Code, building Provared" (a label, not checked) May do: provared.code.read, provared.code.change, provared.code.run, provared.code.release, provared.data.delete, provared.web.read, provared.agent.instruct Limit: provared.code.run: no more than 600 actions in any hour Limit: provared.code.change: no more than 600 actions in any hour Limit: provared.code.release: no more than 20 actions in any 24 hours Limit: provared.data.delete: no more than 30 actions in any 24 hours Stated rule: Never hide, alter or leave out its own records. Stated rule: Never state what it has reason to believe is false, and never make up a record or a result. Stated rule: Never go around an access control, a block or a refusal. Stated rule: Never obtain or use access that it was not given. Stated rule: Never carry on after being told to stop. With: nobody named From, until: 2026-10-10T21:08:16Z, 2026-10-18T21:09:16Z Purpose: "Build Provared, in the author's own time: read and change the code in its repository, run its tests and tools, and publish what the author approves." Signature, passkey (ES256): valid Entry 3887: SLIP J0TC03NY5y5YKw7G3FbSrCMmflpfoatCsLaKTCpJNWY Issuer: "Pavel i" (a label, not checked) Issuer's key thumbprint: Wt7n9Omj4ZvioJdUV4OhP2V0pAte3HAVpI0xqL_1aIw Signed on: https://prova.red Agent: "Claude Code, building Provared" (a label, not checked) May do: provared.code.read, provared.code.change, provared.code.run, provared.code.release, provared.data.delete, provared.web.read, provared.agent.instruct Limit: provared.code.run: no more than 1200 actions in any hour Limit: provared.code.change: no more than 600 actions in any hour Limit: provared.code.release: no more than 20 actions in any 24 hours Limit: provared.data.delete: no more than 30 actions in any 24 hours Stated rule: Never hide, alter or leave out its own records. Stated rule: Never state what it has reason to believe is false, and never make up a record or a result. Stated rule: Never go around an access control, a block or a refusal. Stated rule: Never obtain or use access that it was not given. Stated rule: Never carry on after being told to stop. With: nobody named From, until: 2026-10-14T19:23:20Z, 2026-12-31T23:59:59Z Purpose: "Build Provared, in the author's own time: read and change the code in its repository, run its tests and tools, and publish what the author approves." Signature, passkey (ES256): valid Entry 397: SLIP pa65cQYda7Olfhp3af_n4dcr3rDAzIgvXsPQXWLVgvA Issuer: "Pavel Izmaylov" (a label, not checked) Issuer's key thumbprint: XbPOlvaqmi84fvS7KhaHZ54YiRWjrQdFFbLWGFEoEyw Signed on: https://sign.prova.red Agent: "Claude Code, building Provared" (a label, not checked) May do: provared.code.read, provared.code.change, provared.code.run, provared.code.release, provared.data.delete, provared.web.read, provared.agent.instruct Limit: provared.code.run: no more than 1200 actions in any hour Limit: provared.code.change: no more than 600 actions in any hour Limit: provared.code.release: no more than 20 actions in any 24 hours Limit: provared.data.delete: no more than 30 actions in any 24 hours Stated rule: Never hide, alter or leave out its own records. Stated rule: Never state what it has reason to believe is false, and never make up a record or a result. Stated rule: Never go around an access control, a block or a refusal. Stated rule: Never obtain or use access that it was not given. Stated rule: Never carry on after being told to stop. With: nobody named From, until: 2026-10-25T14:18:35Z, 2026-12-31T23:59:59Z Purpose: "Build Provared, in the author's own time: read and change the code in its repository, run its tests and tools, and publish what the author approves." Signature, passkey (ES256): valid
What the agent did
16899 receipts, from 2026-10-10 21:20 UTC to 2026-10-31 17:50 UTC, under 22 seals. Days and times are in UTC.
| Day | Receipts | By kind of action |
|---|---|---|
| 2026-10-10 | 192 | provared.code.run 122, provared.code.change 48, provared.code.read 11, provared.code.release 5, provared.web.read 4, provared.agent.instruct 2 |
| 2026-10-11 | 496 | provared.code.run 334, provared.code.change 66, provared.web.read 57, provared.data.delete 17, provared.code.read 15, provared.agent.instruct 5, provared.code.release 2 |
| 2026-10-12 | 1612 | provared.code.run 1068, provared.code.change 273, provared.web.read 135, provared.code.read 113, provared.agent.instruct 17, provared.data.delete 4, provared.code.release 2 |
| 2026-10-13 | 1091 | provared.code.run 698, provared.code.change 242, provared.code.read 132, provared.data.delete 12, provared.web.read 4, provared.agent.instruct 2, provared.code.release 1 |
| 2026-10-14 | 1297 | provared.code.run 784, provared.code.change 311, provared.code.read 172, provared.data.delete 10, provared.agent.instruct 9, provared.code.release 8, provared.web.read 3 |
| 2026-10-15 | 626 | provared.code.run 373, provared.code.change 185, provared.code.read 47, provared.agent.instruct 9, provared.data.delete 8, provared.code.release 4 |
| 2026-10-16 | 1265 | provared.code.run 746, provared.code.change 372, provared.code.read 82, provared.data.delete 30, provared.agent.instruct 21, provared.code.release 9, provared.web.read 5 |
| 2026-10-17 | 1906 | provared.code.run 1264, provared.code.change 379, provared.code.read 217, provared.agent.instruct 40, provared.code.release 6 |
| 2026-10-18 | 1966 | provared.code.run 1261, provared.code.change 484, provared.code.read 179, provared.agent.instruct 31, provared.code.release 7, provared.data.delete 4 |
| 2026-10-19 | 681 | provared.code.run 458, provared.code.change 182, provared.code.read 28, provared.agent.instruct 10, provared.code.release 2, provared.data.delete 1 |
| 2026-10-20 | 754 | provared.code.run 472, provared.code.change 153, provared.code.read 102, provared.data.delete 16, provared.agent.instruct 10, provared.code.release 1 |
| 2026-10-21 | 301 | provared.code.run 176, provared.code.change 78, provared.code.read 37, provared.data.delete 5, provared.code.release 3, provared.agent.instruct 2 |
| 2026-10-23 | 527 | provared.code.run 381, provared.code.change 66, provared.code.read 62, provared.data.delete 10, provared.agent.instruct 5, provared.code.release 3 |
| 2026-10-24 | 1272 | provared.code.run 932, provared.code.change 161, provared.web.read 79, provared.code.read 63, provared.agent.instruct 24, provared.data.delete 8, provared.code.release 5 |
| 2026-10-25 | 1228 | provared.code.run 927, provared.code.change 125, provared.code.read 56, provared.data.delete 45, provared.web.read 38, provared.agent.instruct 23, provared.code.release 14 |
| 2026-10-26 | 25 | provared.code.run 12, provared.code.release 5, provared.code.read 3, provared.code.change 3, provared.web.read 2 |
| 2026-10-27 | 252 | provared.code.run 156, provared.code.read 45, provared.code.change 35, provared.code.release 9, provared.agent.instruct 4, provared.web.read 2, provared.data.delete 1 |
| 2026-10-28 | 244 | provared.code.run 150, provared.code.read 35, provared.code.change 25, provared.web.read 19, provared.data.delete 7, provared.agent.instruct 4, provared.code.release 4 |
| 2026-10-31 | 1164 | provared.code.run 839, provared.code.change 134, provared.code.read 79, provared.web.read 67, provared.agent.instruct 24, provared.code.release 13, provared.data.delete 8 |
| Kind of action | Receipts |
|---|---|
provared.code.run | 11153 |
provared.code.change | 3322 |
provared.code.read | 1478 |
provared.web.read | 415 |
provared.agent.instruct | 242 |
provared.data.delete | 186 |
provared.code.release | 103 |
| Tool | Receipts |
|---|---|
| Bash | 10829 |
| Edit | 2010 |
| Write | 1312 |
| Read | 1292 |
| WebFetch | 295 |
| Grep | 179 |
| Bash (failed) | 165 |
| SubagentHandback | 164 |
| Agent | 135 |
| Monitor | 118 |
| WebSearch | 113 |
| SendMessage | 107 |
| PowerShell | 105 |
| TaskStop | 35 |
| PowerShell (failed) | 10 |
| Artifact | 10 |
| WebFetch (failed) | 7 |
| Read (failed) | 4 |
| ListAgents | 3 |
| Grep (failed) | 2 |
| CronCreate | 2 |
| Glob | 1 |
| TaskStop (failed) | 1 |
| Seal | Covers | Sealed at | Time-stamp |
|---|---|---|---|
| entry 12 of book-1.jsonl | the first 12 entries | 2026-10-10 21:37 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 143 of book-1.jsonl | the first 143 entries | 2026-10-10 22:35 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 679 of book-1.jsonl | the first 679 entries | 2026-10-11 22:31 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 715 of book-1.jsonl | the first 715 entries | 2026-10-12 21:06 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 2334 of book-1.jsonl | the first 2334 entries | 2026-10-13 18:33 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 3755 of book-1.jsonl | the first 3755 entries | 2026-10-14 19:09 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 4718 of book-1.jsonl | the first 4718 entries | 2026-10-15 19:47 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 5326 of book-1.jsonl | the first 5326 entries | 2026-10-16 20:02 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 6616 of book-1.jsonl | the first 6616 entries | 2026-10-17 08:59 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 8526 of book-1.jsonl | the first 8526 entries | 2026-10-18 00:07 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 10437 of book-1.jsonl | the first 10437 entries | 2026-10-18 23:55 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 11094 of book-1.jsonl | the first 11094 entries | 2026-10-19 23:08 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 12535 of book-1.jsonl | the first 12535 entries | 2026-10-23 23:09 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 13954 of book-1.jsonl | the first 13954 entries | 2026-10-24 23:08 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 14154 of book-1.jsonl | the first 14154 entries | 2026-10-25 10:51 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 14156 of book-1.jsonl | the first 14156 entries | 2026-10-25 10:51 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 5 of book.jsonl | the first 5 entries | 2026-10-25 10:53 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 402 of book.jsonl | the first 402 entries | 2026-10-25 14:25 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 1072 of book.jsonl | the first 1072 entries | 2026-10-25 23:06 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 1231 of book.jsonl | the first 1231 entries | 2026-10-27 22:54 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 1422 of book.jsonl | the first 1422 entries | 2026-10-28 21:53 UTC | no outside time-stamp: the time is the recorder's own word |
| entry 2766 of book.jsonl | the first 2766 entries | 2026-10-31 17:50 UTC | no outside time-stamp: the time is the recorder's own word |
Where it went outside its permission
The checker reports 1 entry outside the permission. Going outside is not a fault in the record: it is what a sound record shows.
- Entry 3135 of book-1.jsonl, 2026-10-13T19:28:46Z, provared.code.run: [over-period-limit] With this stub there are 601 such actions in any hour. The slip allows 600.
The entry of 13 October 2026, explained: it is the 601st run of a command in one hour, where the permission allows 600. The author states that several helper agents were working at once. Each call was checked against the book as it stood when the call was asked, so calls asked at nearly the same moment near the limit were each allowed, because none of them was in the book yet, and together they could go over: at that time the check before acting did not count calls allowed and not yet recorded. Since 17 October 2026 the recorder counts each such call, for up to 15 minutes. The checker reports what happened, as it should.
The checker's summary, exactly as printed
Summary Is the record intact? yes Was every signature checked? yes Did the agent stay within its slip? yes, as far as this record shows Time-stamped in a way you trust? no Witnessed by a witness you trust? no (you named no witness you trust, --witness) Checked against keys you named? yes: the passkeys you trust, and the recorder you expect Slips 2, stubs 2760 (countersigned 0, one-sided 2760), seals 6
The whole answer, one block for each entry, is checker-answer.txt.
The books
A book holds at most 100,000 entries, so the recorder seals a book at 90,000 entries (or at 100 MB of text, whichever comes first), keeps it, and starts a new one that begins with the permission in force. This record is in 2 books, each checked on its own; the summary above is the checker's answer for the book in force, book.jsonl.
The recorder enforces every limit across its books: it keeps the time and amount of every receipt in the books kept before, and its check before acting counts them, so a new book starts no limit again. A checker given one book counts within that book only, so around the start of a new book the record a checker is shown can hold, across two books, up to twice a limit within one period, though the agent was held to the limit; a total for the whole permission is split between the books. To see the whole, check every book, and add up the receipts of the last of one book and the first of the next.
A kept book moved, renamed or removed while the recorder is stopped is no longer counted by it, and nothing in the record shows that. The recorder numbers its kept books 1, 2, 3 in order, so this page points out a gap in the numbers; it cannot show a missing last one, nor tell a book that has gone from a file put in the folder by hand.
| Book | Entries | Receipts | From | To |
|---|---|---|---|---|
| book-1.jsonl | 14157 | 14139 | 2026-10-10 21:20 UTC | 2026-10-25 10:51 UTC |
| book.jsonl | 2768 | 2760 | 2026-10-25 10:52 UTC | 2026-10-31 17:50 UTC |
The checker's summary for book-1.jsonl (14157 entries, about 96472 KB), exactly as printed; the whole answer is checker-answer-1.txt.
Summary Is the record intact? yes Was every signature checked? yes Did the agent stay within its slip? NO: first at entry 3135 Time-stamped in a way you trust? no Witnessed by a witness you trust? no (you named no witness you trust, --witness) Checked against keys you named? yes: the passkeys you trust, and the recorder you expect Slips 2, stubs 14139 (countersigned 0, one-sided 14139), seals 16
Each kept book is checked as the book in force is, naming the same keys:
npx provared-check book-1.jsonl --issuer BkrSDxKyk2FW0GD0-WCyOKcRRXZs6QDLBPjlBMItPPk --issuer Wt7n9Omj4ZvioJdUV4OhP2V0pAte3HAVpI0xqL_1aIw --issuer XbPOlvaqmi84fvS7KhaHZ54YiRWjrQdFFbLWGFEoEyw --sealer OOgdiubfBSeXkjMOi5bUcbFyXpuuorxC2gdtV2oyAhw
Check it yourself
The book in force is book.jsonl (2768 entries, about 18989 KB); the books kept before it are under "The books" above. The permissions of all the books, each once, alone are slip.json, slip-2.json, slip-3.json. A checker trusts nothing it is not told to trust, so name the keys: the three passkeys that signed the permissions, each by its thumbprint, and the recorder's three keys, by the fingerprint of the set. With Node.js 24.7 or later:
npm install provared npx provared-check book.jsonl --issuer BkrSDxKyk2FW0GD0-WCyOKcRRXZs6QDLBPjlBMItPPk --issuer Wt7n9Omj4ZvioJdUV4OhP2V0pAte3HAVpI0xqL_1aIw --issuer XbPOlvaqmi84fvS7KhaHZ54YiRWjrQdFFbLWGFEoEyw --sealer OOgdiubfBSeXkjMOi5bUcbFyXpuuorxC2gdtV2oyAhw
Or in a browser, on the checking page: choose the file, and paste the thumbprints, one to a line, into the passkey box and the fingerprint into the recorder box. No browser tried on the author's computer on 13 October 2026 (Chrome 155, Edge 155 and Brave 155) has the third method a seal is signed with (SLH-DSA), so in a browser the page says that the check was not complete and gives no pass; all three check the receipts' quantum-safe signatures (ML-DSA). The command-line checker checks everything.
What this record does not show
The checker says this itself, at the end of its answer:
- It shows what was recorded, not what was left out. An agent that acts and writes no stub leaves no trace here.
- A one-sided stub shows what the agent's side said, not what the other side did.
- A refusal shows what the service's side said, not what the agent did.
- It does not show that an action was wise, lawful or wanted.
- A rule of conduct in a slip, such as "never claim to be a human being", is the person's signed instruction. No check can show that the agent kept it.
- It does not show who was holding the device when the passkey signed.
- A name in a record is a label. Only keys are checked.
- Nothing here is time-stamped by an outside service that you named as trusted. So it does not show when the record was made, and the latest stubs under a slip or a pass, or a slip or a pass with all its stubs, could have been removed.
And two things of this record's own. A refused call leaves no entry, so the record does not show how often the agent was stopped. Every receipt is one-sided, because no other party takes part in a tool call, so each shows what the agent's side said.
Two gaps in this record, stated. On 11 October 2026, seven tool calls of a helper agent were taken and not recorded: the recorder could not replace the book file while another program was reading it, and the hook reported each as "taken and not in the record". The fault and its fix are in the change log; the seven calls stay unrecorded. On 17 October 2026, at about 15:05 UTC, the recorder was restarted on new code and did not answer for a short time: one tool call of a helper agent was taken and its receipt not written, and the hook reported it as "taken and not in the record"; that helper's next call was refused.