Privacy promise
The app never receives file contents — only counts, dates, version strings, setting names and fingerprints.
A fingerprint is a one-way code made from a line of text. It lets the app check whether a line matches, and it cannot be turned back into the words. The proctor is short, open, and served from this site so you can read every line of it.
What the proctor sends
The exact fields, nothing more.
| Field | What it is | What is sent |
|---|---|---|
| when | The moment the proctor ran | A date and time |
| os | The kind of computer | One word, such as mac, linux or windows |
| claude_version | The Claude Code you have installed | A version string, or the word unknown |
| Your rules file | ||
| exists | Whether you have one | Yes or no |
| lines | How long it is | A count |
| bytes | How big it is | A count |
| first_line_sha | The first line that is not blank | A fingerprint, never the words |
| over_target | Left empty on purpose | Nothing; the app decides from the count |
| Your memory folder | ||
| dir | Which memory folder the proctor chose | A fingerprint of the folder's name, never the path |
| index_exists | Whether the index file is there | Yes or no |
| index_lines | How long the index is | A count |
| index_bytes | How big the index is | A count |
| index_bullets | How many bullet points it holds | A count |
| files | How many notes are in the folder | A count |
| newest | The note changed most recently | A fingerprint of its name, a fingerprint of its one-line description, and the date it changed |
| Your settings file | ||
| exists | Whether you have one | Yes or no |
| hook_events | Which hook events your hooks listen for | The event names only |
| hook_counts | How many hooks each event has | A count per event name |
| matcher_tokens | The tool names your hook matchers mention | The tool names only |
| top_keys | The top-level setting names in the file | The names only, never their values |
| Your skills | ||
| folders | How many skill folders you have | A count |
| with_file | How many hold a skill file | A count |
| fields | Which fields the skill files use at the top | The field names only |
| longest_description_chars | The longest description among them | A count of characters |
| Your scheduled tasks | ||
| count | How many you have | A count |
| with_name_and_description | How many are filled in properly | A count |
| Your own questions | ||
| custom | Anything you asked the quiz to check, such as a date at the top of a note | A number or a date as is; any text as a fingerprint |
| hashes_of | How the fingerprints were made | One sentence that names the method |
What it never sends
Not once, not by accident.
- The contents of any file. Not a line, not a word.
- File names or folder paths. Only the memory folder's name, as a fingerprint.
- Email addresses, keys, tokens, or the values of any setting.
- Anything from your chats, your projects, or your code.
See for yourself
Print exactly what would be sent.
The proctor has a command that prints the facts and sends nothing. Inside the skill folder it is node proctor.js facts. From any folder, paste this:
node ~/.claude/skills/quickstart/proctor.js facts
What it prints is what it sends. Read it line by line; there is nothing else.
You can also read the proctor itself: the proctor and the skill card.
What the app keeps
A fingerprint of your key, your quizzes, and your scores.
Your key is made on the first run and stored here only as a fingerprint, so nobody can read it back, including us. Each quiz keeps its questions, its answers and its score so the report can say what changed. There is no login, no email, and no account to make.
We're not trying to trick it.