TECHNICAL TRUST
What leaves your machine?
AdroitPad is local-first. Here is the complete list: update checks, licence validation, on-demand developer news, an AI model if you choose one, the APIs you point the client at, your own cloud AI provider only if you add a key, your email if you ask for updates, a contact form only if you send one, and one hashed trial check. Nothing else.
Connect an AI agent like Claude Code and it sends what you let it read to its own model provider — AdroitPad doesn't. See below.
If you connect an AI agent
A local socket file readable only by your user connects the agent to the running app; it is not a network port. The agent app starts AdroitPad's MCP program, which talks over that socket. Each connection has its own token; only a hash is stored in the macOS Keychain.
AdroitPad asks you to confirm where data goes before the feature turns on, and repeats it on every connection form. The agent can read only the projects the connection names and only the record types you tick, with secrets removed. Design docs are included only if selected. It never reads the vault, and nothing is read while AdroitPad is locked. The project always comes from the connection or Claude Code's working folder, never from the agent's request.
The agent sends its context to its own model provider — for Claude Code, Anthropic — under that agent's terms, not AdroitPad's. Suggested memories are unverified Hypotheses; record changes, design-doc edits, plans, re-plans, change requests, progress reports and releases wait for your approval. Deletes need a second click, limits apply per connection, and only you can sign off a design doc. Plan-created files are new files inside the linked project folder only; they never overwrite existing files.
Progress evidence such as commits, PRs and test counts is what the agent reports. AdroitPad does not run or verify it; it shows the evidence before approval, and a close without evidence starts unticked.
Records and design docs can contain prompt injection. AdroitPad treats everything returned as data, and anything an injected instruction tries to change still requires your approval. Every call is logged in Activity as metadata only. Connections expire after inactivity, Remove revokes a token immediately, and turning External agents off closes the socket.
Once an agent has read something, AdroitPad cannot recall it from the provider. Give a connection only what you are comfortable sending there.
The trial check
Once per installation, AdroitPad sends a salted one-way hash of the OS machine identifier plus the app version. The hash is computed on the machine and cannot be reversed by us. The stored row is that hash and a date. If the request fails or is blocked, the app starts the trial locally and opens anyway.
How data is stored
A single encrypted database uses AES-256. The key is held in your OS keychain: macOS Keychain, Windows DPAPI or Linux libsecret. The app auto-locks on idle, with Touch ID on macOS and a passcode elsewhere.

Secrets and AI
Known AWS, GitHub, Slack, Google and Stripe tokens, private keys, .env blocks and connection strings are masked, excluded from search and excluded from AI. Clipboard contents clear after 30 seconds. The local AI has no email, HTTP, upload or share tool. This is AdroitPad's own assistant. External agents are separate apps with their own models — see “If you connect an AI agent”.



Honest limits
AdroitPad is not audited and holds no compliance certification. Encryption protects data at rest. If your machine is compromised while the vault is unlocked, so is your data.
Security reports:privacy@adroitpad.com