Privacy Policy
Last updated October 29, 2026
Programmable Dev is operated by Programmable, LLC, 3607 10th St NW, Washington, DC 20010, USA ("we", "us"). This policy covers three groups: the apps that use the Service through its API and the people who run them, the tenants of those apps who connect their accounts on our hosted pages, and the people who sign in here: the members of workspaces (owners, developers and approvers), the approvers an app names, and our platform admins. Questions: [email protected].
The short version
- We hold credentials (OAuth tokens and API keys) encrypted, use them only to make the calls an app's agents ask for, and never return them to the app or the agent.
- We log every call with its outcome and cost, keep a summary of its input and a preview of its result for 90 days, and the rest of the log for 400 days.
- We don't call an AI model, we don't use advertising cookies or trackers, we don't sell personal information, and we don't use anyone's data to train AI models.
Our two roles
For the accounts of people who sign in and for the records of the apps we serve (keys, tenants, actors, grants, billing), we decide how data is used and are responsible for it. When we hold a tenant's credentials and make calls with them, we act for the app as its service provider (or processor) under the Terms and, once the app accepts it, our DPA. What those calls carry is decided by the app, its tenant and its agent, not by us.
What we collect and keep
- People who sign in: email, name (optional) and sign-in records. Sign-in is handled by our shared Programmable sign-in service, which runs on our own servers; we never see your password. The people who sign in are workspace members, the approvers an app names and our platform admins; an app's tenants and agents never do. After you sign in, we also ask programmable.you (our platform, run by us) whether you have an account there, by sending it a fresh sign-in token for you; if you do, we keep that account's id on your profile and nothing else from it. It never creates an account there.
- Sharing with programmable.you: only if you allow it, on programmable.you. You pick the services and how long: 30 or 90 days. For those services, when you connect an account in one of our own Programmable apps, we keep a copy of its sign-in token (the access token) in your programmable.you key store, so your assistant there can use it, and we update the copy when the token is renewed. The refresh token stays here. You can stop it at any time on programmable.you (Settings > Connected apps) or here (Settings > Profile); when you stop it here, we remove the copies we made. Apps run by other companies are never shared this way.
- Workspaces: every app lives in a workspace. For each workspace we keep its name, who created it, its members and their roles (owner, developer or approver), the invites its owners send (the invited address, the role and who invited them), the approvers it names for one app, and a record of each app moved in or out, when and by whom. A workspace's owners and developers see its member list (with each member's address); an approver sees only their own membership. Its owners manage it.
- Apps: the app's name and description, its webhook address, its return origins, and its keys stored as hashes. Tenants and actors are records the app creates, with the identifiers and labels the app chooses; we don't know who they are beyond that.
- Connections: for each tenant connection, the provider, a label, the account identifier the provider returns (such as a workspace or user id), the status, and the credential, encrypted with AES-256-GCM and read only to make a call, refresh it, or revoke it. OAuth clients an app registers for a provider are stored the same way.
- Grants, caps and approvals: which tools each actor may call and its daily cap; for a call that needs approval, the call as the approver saw it, who decided, when, and the result of the call that then ran.
- Call log: for every call, the app, tenant, actor, connection, tool, which route ran, the outcome, the cost booked, how long it took, a summary of the input and a preview of the result. The summary and preview are removed after 90 days; the rest is kept for 400 days.
- Audit log: who changed what in the dashboard and API (keys rotated, grants changed, connections deleted), for the life of the app.
What a call processes, and doesn't keep
When an agent calls a tool, the request goes from our servers to the provider (through its MCP server, our provider record, or a built-in), with the tenant's credential attached, and the result comes back through us to the agent, marked as untrusted. Credentials are scrubbed from results before they leave. Beyond the summary and preview in the call log, request and result bodies are handled in memory and not kept. Built-in tools (web search, a page reader, Apify) use keys the tenant or app supplies, so those providers receive the query under the tenant's or app's own account.
Google user data
When a tenant connects a Google account on our hosted page, Google asks them to allow only what the app needs: their email address and basic profile (to show which account is connected), and, depending on the connection, to view and edit Google Calendar events, view and edit Google Sheets spreadsheets, send email from Gmail, or use Google Drive files they open or create with the app. We use that access only to make the calls the app's agents ask for, each within the grants, caps and approvals the app has set, and to refresh or revoke the token. We keep the OAuth tokens encrypted, and from each call only the summary and preview in the call log described above (removed after 90 days).
Programmable Dev's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements. In particular, we don't sell Google user data, use it for advertising, or use it to develop, improve or train generalized AI or machine-learning models; we transfer it only to the app the tenant connected it for, to provide that app's features; and no person at Programmable, LLC reads it unless the tenant asks us to, it is needed for security or to comply with the law. A tenant can disconnect at any time through the app, or remove access at myaccount.google.com/permissions; disconnecting deletes the token here and revokes it at Google.
Notice at collection (California and other states)
The categories of personal information we collect, where they come from, why, how long we keep them and who receives them. We don't collect sensitive personal information other than credentials, and we use those only to provide the Service.
| Category | Examples | Source | Purpose | Kept for | Disclosed to |
|---|---|---|---|---|---|
| Identifiers (people who sign in) | Name, email, account ID, IP address; the id of your programmable.you account, if you have one | You; your browser; programmable.you | Signing in, workspaces, approvals, admin, security; linking your profile to your programmable.you account | While the account is open, then 30 days | Our service providers; programmable.you (a sign-in token, to find your account there) |
| Workspaces | The workspace's name, who created it, its members and their roles, the app approvers it names, and the apps moved in or out and by whom | The workspace's owners and members | Deciding who may see and change each app; billing; telling owners when an app moves | Memberships and invites until the person leaves or is removed, or the workspace is deleted. The audit log keeps who was invited, joined, left or was removed (with their address), role changes and moves; workspace-level audit entries are not tied to an app and are kept with the audit log, which is not purged today | The workspace's owners and developers (an approver sees only their own membership); Resend for invites and move notices |
| Invites | The invited email address, the role, the workspace or app, and who invited them | The workspace owner who invites | Letting the invited person join when they sign in; the invite email | The invite until it is used or removed; the email's copy 30 days | Resend (our email provider) |
| App and tenant records | App name, the tenant and actor identifiers and labels an app chooses, who created them | The app | Running the app's endpoints, grants and caps | Life of the app, then 30 days | No one |
| Credentials | App keys and actor tokens (hashed); OAuth tokens, API keys and client secrets (encrypted); the account identifier a provider returns | The app; the tenant on the connect page; the provider | Authenticating apps and agents; calling providers; refresh and revoke | Until deleted, or 30 days after the app closes | Only the provider each credential is for; if you allow it, a copy of your own sign-in tokens to your programmable.you key store (our platform) |
| Call log | For each call: app, tenant, actor, tool, route, outcome, cost and duration; a summary of the input and a preview of the result | The agent's calls | Showing apps what their agents did; billing; security; abuse prevention | Input and result 90 days; the rest 400 days | The app that made the call |
| Approvals | The call as shown to the approver, who decided, when, and the result | The agent's calls; the approver | Running the exact call that was approved, once | Input and result 90 days after a decision; the rest 400 days | The app and its approver |
| Events and webhooks | Deliveries of events to the app's webhook address | The service | Telling the app what happened | 30 days | The app |
| Billing | For an app on the plan: the billing email and name, the Stripe customer and subscription ids, the plan's status and periods, and the call counts and costs reported to Stripe. Card details go to Stripe, never to us | You at checkout and in the billing portal; Stripe; the call log | Charging for the plan, invoices, taxes, fraud prevention | While the app is on the plan, then as long as tax and accounting law requires (usually 7 years) | Stripe (our payment processor); Resend, for the trial-ending and failed-payment emails to the app's owners |
| Internet activity | Sign-ins, API requests, server error reports | Your browser and API calls | Security, abuse prevention, fixing problems | Up to 90 days; error reports 30 days | Cloudflare, Sentry (service providers) |
Who else processes data
- Our service providers: OVHcloud (our server, database and encrypted backups; United States), Cloudflare (network, TLS and bot protection), and Sentry (server error reports, with credentials and personal data removed; in your browser only if you allow it). Our DPA lists them.
- Stripe processes payments for the plan: checkout, the billing portal, invoices and taxes. It receives the billing details you give it and, for usage, only the number of billable calls and the paid-route cost per period, never a call's input, result or a tenant's data. Stripe handles card details under its own privacy policy.
- Resend sends our emails: today invites, when a workspace owner invites someone to a workspace or to approve for an app, and a notice to a workspace's other owners when an app is moved out of it. It receives the recipient's address and the email's text (for an invite: who invited them, to which workspace or app, and the role; for a move notice: which app, from which workspace, and who moved it), never a call's input, a result or a credential. We keep a copy of each email for 30 days.
- Providers tenants connect (Slack, GitHub, Notion and others) receive the calls agents make, with the tenant's credential, under the tenant's agreement with them.
- Built-in and fallback services an app or tenant switches on (Brave Search, Tavily, Exa, Jina Reader, Firecrawl, Apify, and Composio as a paid fallback) receive the queries sent to them, under the app's or tenant's own keys and terms.
- The apps we serve receive the call log, approvals and events for their own tenants, and are responsible for them under their own privacy policies.
- Authorities, when the law requires it, and a buyer or successor if our business is sold or merged (bound by this policy).
Where data is processed
Our server, database and backups are in the United States and all processing happens there. If you use the Service from the European Union, the European Economic Area or the United Kingdom, your data is transferred to the United States; we rely on standard contractual clauses (available on request) for that transfer. Our legal bases are performance of our contract (running the Service) and our legitimate interests in keeping it secure and improving it.
Retention and security
Retention for each category is in the table above. Account and app records are deleted within 30 days of closure. Data is encrypted in transit; credentials and client secrets are encrypted at rest with a key that can be rotated; app keys and actor tokens are stored as hashes; every outbound request passes an allow-list of hosts; access to production systems is limited to the people who run them. Backups are encrypted. No system is perfectly secure; if a breach affects your personal information, we'll tell you as the law requires.
Deleting data
Apps delete connections, actors and tenants through the API or the dashboard; deleting a connection removes its credential here and revokes it at the provider where the provider supports that. Deleting an actor or tenant removes its grants and strips its call and approval payloads at once. Your own account: signed in, go to Settings > Profile and choose Delete my account; your profile, memberships, invites to you, emails waiting for you, the included calls Getting started gave you and the connections you made to apps' test accounts (revoked at the provider) are deleted at once, and the audit log keeps what happened without your name or address. Connections you made for an app's own customers belong to that app and stay with it. If you are the only owner of a workspace that still has apps, make someone else an owner or move or delete those apps first. To close an app or a sign-in account by email instead, write to [email protected] from the account's address; we delete the records within 30 days. Because the Programmable account is shared across Programmable apps, ask us there to close the Programmable account itself; that also ends your access to those.
Your rights
Depending on where you live (including the EU, EEA and UK, and US states such as California, Colorado, Connecticut, Oregon, Texas and Virginia), you may have the right to know what personal information we hold about you and get a copy, to have it corrected or deleted, to object to or restrict some processing, to opt out of its sale (we don't sell it) and of targeted advertising (we do none), and not to be treated differently for using these rights. If you are a tenant or user of an app we serve, that app is the controller of your data and your request goes to it; we'll help it respond. A copy of your data: signed in, Settings > Profile > Download my data gives you what we hold about you as a JSON file, at any time (never a credential). How to ask: email [email protected]; we verify requests by confirming control of the email address concerned, reply within 45 days (or 30 in the EU and UK), and tell you if we need more time. If we decline, you can appeal by replying, and you may complain to your supervisory authority or state attorney general. Global Privacy Control and Do Not Track: we have no advertising trackers, so there is nothing for these signals to turn off.
Children
Programmable Dev isn't directed at anyone under 18. We don't knowingly collect information about children; if you think we have, email [email protected] and we'll delete it.
Changes
We'll post changes here with a new date and, for material ones, email workspace owners and the people we set up Platform apps for before they apply.