Security & Trust
How BaseCommand Handles Your CRM Data
The honest version. What we connect to, what we send to LLMs, what we keep, and what we don't have yet.
OAuth-only access
Connect via your CRM’s standard OAuth flow. No credentials shared. Revoke any time from your CRM portal.
Deleted the moment you disconnect (HubSpot)
Disconnecting your HubSpot portal purges the synced working copy and the analytics derived from it right then, not on a 30-day timer. (Workspaces shared with a still-connected teammate are preserved.) Salesforce disconnect currently revokes access and stops the sync; the synced-data purge for Salesforce is still being wired up.
Your data, encrypted and scoped
The Suite syncs a working copy of your CRM records into Supabase to power the dashboard and background agents. It is encrypted at rest and row-level scoped to you.
No write without your approval
The install requests write scopes so writeback can work, but nothing is written to your CRM until you approve it. Most agents only read; every record-level write is explicit and click-gated in the product.
Hardened by default
HTTPS-only (HSTS), clickjacking and MIME-sniffing protection are enforced across the Suite. Rate limiting is applied at the application layer to specific write, send, and LLM routes, not as a blanket edge-wide guarantee.
Automatic team provisioning
An account owner can claim an email domain, and once we confirm the account controls it, teammates on that domain join the workspace automatically with no per-seat invites to manage. A claimed domain grants nothing until that confirmation. Owner, admin, and viewer roles, plus ownership transfer, are built in.
Audit trail
Team, billing, access, and agent actions are recorded to an audit log you can review, so you can see who did what, and when.
No third-party data brokers
No enrichment vendors, no marketing data appends, no resale. Your CRM data goes only to the providers you connect. The full table below also names the systems that support the service itself, covering billing, beta feedback, and our own internal alerts.
US-only processing
Data is hosted and processed in the US on Vercel and Supabase. EU customers should evaluate fit accordingly.
Honest about compliance
We don’t have SOC 2 yet. We tell you upfront and offer a sandbox-evaluation path for security reviews that need it.
How your data moves through BaseCommand
One path, end to end, for the connectors you use: your CRM data stays within the providers in the table below, including Google (Gmail) and Fathom when you connect them. That same table lists every other system that receives BaseCommand data, including billing, beta feedback, and our own internal alerts. No data brokers.
Connect HubSpot
You authorize the connection via OAuth. The Suite stores an encrypted connection token in Supabase. We never see your HubSpot password.
Sync into the Suite (US)
Background sync pulls a working copy of the records the agents need into Supabase, encrypted at rest and row-level scoped to you.
Anthropic (Claude)
The Suite sends only the relevant records directly to Anthropic for the analysis. Anthropic does not train on API data.
Action Inbox
The output lands in your Action Inbox in the Suite for human review. Revoking the connection in HubSpot invalidates access.
What we connect to
The exact OAuth scopes we request at install, and why. Record-level writes are click-gated in the product: the grant enables writeback, your approval triggers it.
| Integration | Method | Scopes | Purpose |
|---|---|---|---|
| HubSpot (read) | OAuth 2.0 | crm.objects.deals.read, crm.objects.companies.read, crm.objects.contacts.read, crm.schemas.deals.read, crm.schemas.companies.read, crm.lists.read | Pull deal, company, and contact data (and their schemas/lists) for analysis. |
| HubSpot (write) | OAuth 2.0 | crm.objects.deals.write, crm.objects.companies.write, crm.objects.contacts.write, crm.schemas.deals.write, crm.schemas.companies.write, crm.lists.write, automation | Requested at install (not granted per-agent). Schema/automation scopes provision the bc_* property groups and Premium renewal workflows once at install; record-level writes (computed values on deals/companies, user-approved tasks, notes, logged emails, the BaseCommand list) are click-gated in the product. Nothing writes without your approval. |
| Salesforce (read, plus approved writes) | OAuth 2.0 with PKCE | api, refresh_token, offline_access, id | Read-only sync of Accounts, Opportunities, Contacts, and Tasks/Events. Salesforce has no read-only REST scope, so the write boundary is enforced at the application layer: the only writes the product can issue are creating a task, logging a note, and updating a specific field, and each one is refused unless a person approved that action in the Inbox. Autonomous execution is off, so a drafted action sits in the Inbox until you release it. |
| Gmail (optional) | OAuth 2.0 | gmail.send, gmail.compose, gmail.readonly, userinfo.email | Only if you connect Gmail: draft and send renewal outreach on your behalf, and read the latest inbound reply on threads the agent is tracking (up to the first ~6,000 characters) to detect and classify responses. The grant covers general mailbox read access; BaseCommand only reads the specific threads tied to agent-initiated outreach. |
| Fathom (optional) | OAuth 2.0 | public_api | Only if you connect Fathom: pull your meeting recordings, summaries, and transcripts so briefs and QBRs can ground on what was actually discussed on your calls. |
| Email delivery | Sent from the BaseCommand Suite (via Resend) to the user’s own email address | n/a | Deliver agent output and notices to the user |
| Stripe | Stripe Checkout and Billing Portal (hosted by Stripe) | n/a | Processes your subscription payment. We never see or store your card number; Stripe does. Your billing email and Stripe customer ID are stored so we can match your account to your subscription. |
| GitHub (beta feedback) | Server-side API call, not a customer-facing connector | n/a | When an admin routes a beta feedback report into our engineering tracker to get it fixed, the issue carries what you wrote and its classification. It does not carry your email address or the page URL you were on. Those stay in the Suite database, referenced by an internal id an admin can look up. |
| Slack | One incoming webhook, one internal channel | n/a | Posts operational alerts to BaseCommand’s own team when a background job fails or a sync breaks, so we can fix it fast. These messages carry system metadata only (job names, error text, an account identifier), never your CRM records or contact information. |
| Intercom (optional) | API key you paste in Settings | Read-only: companies, conversations | Only if you connect it: pulls your support conversation volume and CSAT to compute a support-health signal. The connector is available today; its scheduled refresh is not turned on yet, so a connected account does not sync on an ongoing basis. |
| Amplitude (optional) | API key and secret you paste in Settings | Read-only: events | Only if you connect it: pulls product usage event counts to compute a usage-health signal. Same status as Intercom: connectable today, scheduled refresh not turned on yet. |
What data is sent to LLM providers
The CRM records relevant to the specific agent you ran. Nothing else.
For an agent like Customer Health Monitor, we send: deal name, amount, stage, close date, owner, associated contact names, engagement summaries, and the custom property values relevant to scoring.
We do not send: passwords, API keys, payment methods, or any data outside your connected CRM.
Analysis runs on Anthropic's Claude models, called directly by the BaseCommand Suite. Anthropic operates under an enterprise DPA and does not train on data submitted via API (per its public terms as of 2026-06-12).
Data retention
Your synced CRM data lives in Supabase, encrypted and scoped to you. Here's where each piece of data lives and how long we keep it.
| Data | Where | Retention |
|---|---|---|
| Synced HubSpot records (deals, contacts, companies, engagement metadata) | Supabase (encrypted, row-level scoped to you) | While your portal is connected; purged the moment you disconnect |
| Synced Salesforce records (accounts, opportunities, contacts, activities) | Supabase (encrypted, row-level scoped to your workspace) | While your org is connected; disconnecting revokes access and stops the sync, but the synced-copy purge for Salesforce is not yet wired up — contact us to request deletion |
| HubSpot and Salesforce OAuth connection tokens | Supabase (encrypted at rest) | Until you revoke the connection; then invalidated and removed |
| Agent run logs and output (Action Inbox items) | Supabase, in the BaseCommand Suite | Until you delete them or your account is closed |
| LLM provider logs | Anthropic | Per Anthropic’s enterprise policy: typically 30 days for abuse monitoring, then deleted |
Authentication model
- OAuth 2.0 through HubSpot's standard flow. The user authorizes the connection from their own HubSpot portal. No credentials are shared with BaseCommand.
- Connection tokens are held by BaseCommand, encrypted at rest in Supabase. Revoking the connection in HubSpot immediately invalidates access.
- No shared HubSpot credentials for you to manage; access is your own OAuth grant. Our service keys (Anthropic, Supabase) are held server-side and rotated by BaseCommand.
- Token scope can be reviewed and modified by your HubSpot admin at any time.
Evaluate without connecting your production portal
For security reviews that need to see the product before granting OAuth access, two paths.
Sandbox HubSpot portal
Connect a HubSpot sandbox or test portal with non-production data. See the full agent output against synthetic records. Recommended for a structured security review.
Live walkthrough
Mike walks any agent through against BaseCommand's own HubSpot in a 15-minute screen-share. No customer data involved.
Compliance status (as of 2026-06-12)
We are an early-stage product. We'll be transparent about what we have and don't have, and we prioritize compliance work as customers require it. If your security policy requires SOC 2 before connecting production data, the sandbox path above lets you evaluate without that gate.
| Standard | Status | Notes |
|---|---|---|
| SOC 2 Type II | Not currently certified | Sandbox evaluation path available for security reviews that require it. |
| GDPR | US-based processing | EU customers should evaluate fit. |
| HIPAA | Not in scope | BaseCommand is not designed for PHI. |
| Data residency | US-only | Hosting and processing happen on Vercel and Supabase US infrastructure. |
| Penetration testing | Not yet conducted | Planned as the product matures; underlying providers (Vercel, Supabase, Anthropic) maintain their own security programs. |
Security questions?
Send a list of specific questions to security@basecommand.ai and we'll respond in writing within two business days. Happy to join a 15-minute call with your security team.