Security Questionnaire
Pre-filled answers to the questions every procurement team asks.
This page is our canonical answer source for CSA CAIQ, Shared Assessments SIG-Lite, HECVAT, and the custom RFP security sections we see most often. If a question you need is not here, email [email protected] and we will answer it and add it for the next reviewer.
How to use this
What you get, what you do not.
This document is the canonical answer source. The evidence behind each answer is cross-referenced in our controls evidence map. Items not yet in place are tracked in our internal security roadmap and a customer-facing 12-month security plan; when asked about them in a prospect call we name the target close date rather than claim them as in-place.
Each question shows a short answer first. Open it for the full answer.
For a question this page does not cover, please email [email protected]. We answer once, publish here, and the next reviewer benefits.
No question matches. Email [email protected].
1. Certifications and audits
Where we are with formal attestations.
Are you SOC 2 Type II compliant?
No. Not held today, and no date is published. Full answer
Not yet, and we are not going to put a date on it that we have not bought. We hold scoped fixed-fee quotes from audit firms and begin the engagement when a customer engagement requires one; Type II then follows its required observation period. We share the readiness roadmap and the current auditor relationship under NDA. One thing we want to say plainly rather than let you infer it: self-hosting does not make a SOC 2 on Sparcle irrelevant. It changes which scope matters. There is no Sparcle-hosted store of your data for an auditor to examine, but we do write, review, build, sign and ship the software that runs inside your perimeter, and we operate the update channel it trusts. A compromised build, a stolen signing key, an unpatched dependency or a careless support workflow are all real routes into your environment, and those are exactly the controls a Type II tests over time. So treat the engineering and release controls described elsewhere on this page as the interim answer, not as a reason the audit does not apply.
ISO 27001?
No. Not pursued in Year 1. Full answer
Not pursued in Year 1. Will reassess when EU and APAC enterprise demand warrants.
HIPAA compliance?
Deployable, not certified. BAA executable per customer. Full answer
We are HIPAA-aware in the bolt-api architecture (PHI handling, audit logging, per-person erasure with a signed receipt and per-tenant crypto-shred, transmission security via TLS, BAA-able sub-processors). A formal Business Associate Agreement is executable per customer. Anthropic BAA is in progress for customers using the Claude API path. HITRUST certification is on the long-term roadmap, not in flight.
FedRAMP, PCI-DSS, FISMA?
No. Not pursued in Year 1. Full answer
Not pursued in Year 1. Will reassess when federal, payment, or defense customer demand warrants.
When did you last conduct a third-party penetration test?
Not yet. An external firm is testing in October 2026. We will publish the summary. Full answer
Never. One is now booked with an external firm and has not been performed yet; we chose a firm that publishes its reports by default, and we will publish the summary when it is done. Internal hardening run completed mid-2026; remediation backlog is published internally and informs scope.
2. Encryption
At rest, in transit, and the key-management surface.
How is data encrypted at rest?
AES-256-GCM envelope encryption with per-tenant keys from a pluggable KMS. Full answer
Layered, and scoped precisely. Per-tenant envelope encryption: each organization has its own Customer Master Key (CMK). A value is encrypted with AES-256-GCM under a fresh 256-bit data key, and that data key is wrapped by the tenant CMK. In Bolt's server this covers stored secrets (organization LLM API keys and the Aeira backend client secret); in Aeira it covers indexed document content and PII-vault entries. Document titles and embedding vectors stay readable so they can be searched, and audit records are signed rather than encrypted. KMS backends: local file-backed is the default and production-tested today (pilots, dev, air-gap); the tenant key is derived on your host from a host master plus a per-tenant secret, so it is operator-held on your infrastructure, not held in a cloud KMS. AWS KMS (per-tenant alias) and HashiCorp Vault Transit (per-tenant Transit key) are implemented; cloud-service integration testing is in flight. With Vault Transit, Vault encrypts the value itself, so there is no local data key and the cipher is the one configured on the Transit key. PKCS#11 HSM, Azure Key Vault, and GCP KMS are on the roadmap; customers needing these should ask. Conversation content (message bodies, agent runs, memory) is not under the CMK: it is sealed with XChaCha20-Poly1305 under a key from your secret store, and a server deployment configured without that key stores it unencrypted. OAuth and connector tokens are sealed separately (see the algorithms answer below). Database layer: customer responsibility, typically managed Postgres (RDS, Cloud SQL, Aurora) with the provider's at-rest encryption enabled. Disk layer: customer responsibility, typically the cloud provider's volume encryption or LUKS.
How is data encrypted at rest on a desktop endpoint?
SQLCipher and AES-256-GCM, with a disclosed caveat. Enforce FileVault or BitLocker. Full answer
Different answer from the server question above, because Bolt on a laptop has no managed database and no cloud volume behind it. Measured on a current build: clipboard history, alerts, the local search index, the thumbnail cache, and the on-device vector indexes are stored in SQLCipher databases, each keyed by its own subkey derived from a single device master. Be precise about where that master lives, because it decides what the rest is worth: on a signed release build it is held in the OS keychain, AND a copy of it is retained on disk in the same data directory at mode 0600 as a recovery file that is deliberately not deleted. On a build that is not a notarized release, that file is the primary store. An attacker who can read the data directory can therefore read the databases. Connector credentials and OAuth tokens are sealed with authenticated encryption (AES-256-GCM for the sign-in refresh token that Google and Microsoft mail, calendar and file access run on; XChaCha20-Poly1305 for MCP connector credentials). Bolt also runs a local Postgres instance on loopback for chat and memory records; the heavy content of those records is sealed with authenticated encryption, while a small queryable surface (subjects, short facts, entity names, timestamps, file paths, URLs) is stored in the clear so local search works without decrypting the whole store, and the data directory itself is not separately encrypted by the application. If the per-install key cannot be saved, chat and memory bodies are stored unencrypted, with a logged warning, rather than sealed under a key that would not survive a restart. Secrets, key material and the encrypted stores are written mode 0600 with their directories at 0700 under the user's own account, and get an explicit owner-only ACL on Windows; this is applied per artifact rather than as a blanket sweep over the data directory. We recommend, and managed deployments should enforce, FileVault or BitLocker: that is what closes the lost-or-stolen-device case, and we would rather say so than imply the application layer already has.
How is data encrypted in transit?
TLS everywhere; mTLS optional on admin endpoints. Full answer
TLS at ingress (cert-manager and Let's Encrypt or customer PKI; HSTS preload-list-eligible). TLS for Postgres connections (SSL_MODE=require recommended). TLS for Redis when supported by the managed provider. TLS for all LLM-provider API calls. mTLS optional on admin endpoints via ingress annotations.
What encryption algorithms are used?
AES-256-GCM, XChaCha20-Poly1305, Ed25519, HMAC-SHA256, SHA-256. FIPS validation pending. Full answer
AES-256-GCM (per-tenant envelope encryption; Google and Microsoft sign-in token and storage credential encryption); AES-256-GCM for shared files (at rest under the server master key, bound to the owning user; org-only links); XChaCha20-Poly1305 (MCP token and message content sealing, on HKDF-derived per-purpose subkeys); SQLCipher (desktop at-rest databases); Ed25519 (audit chain signing, manifest-bundle signing, update-bundle signing); RS256 (licence token verification); HMAC-SHA256 (PII pseudonymization, webhook signatures); SHA-256 (content hashing). Algorithms other than XChaCha20-Poly1305 are FIPS-eligible; FIPS 140-3 module validation is pending and on the roadmap.
How are encryption keys managed and rotated?
Per-tenant key rotation by admin; keyless signing for images. Full answer
Per-tenant CMK rotation via an authenticated admin endpoint. Old DEKs continue to decrypt; new writes wrap under the new key id. Customer-driven cadence (recommend annual or on suspected key compromise). Cosign signing for releases uses keyless Fulcio short-lived certs, so there is no long-lived signing key to manage. Master keys for PII pseudonymization and token vault encryption are sourced from the customer's secret store (External Secrets Operator and AWS Secrets Manager, GCP Secret Manager, or Vault).
3. Access control
Identity, authorization, and privileged access.
How do users authenticate?
OIDC or SAML through your IdP, with SCIM 2.0 provisioning. Full answer
OIDC or SAML 2.0 via the customer's IdP (Okta, Microsoft Entra ID, Google Workspace, Auth0, Keycloak, custom). SCIM 2.0 server at /scim/v2/* for IdP-driven user provisioning (the standard SCIM mount point your IdP will look for). Per-org SCIM bearer tokens issued via the admin API; rotation recommended every 90 days (SOC 2 CC6.1, ISO 27001 A.9.4).
Multi-factor authentication?
Yes, enforced at your identity provider. Full answer
MFA is enforced at the customer's IdP. Bolt accepts whatever authentication assertion the IdP issues. The recommended IdP configuration requires MFA for all users with admin role.
Role-based access control?
Yes, enforced at several layers. Full answer
Yes. RBAC enforced at multiple layers: session middleware, admin-only middleware, per-handler OAuth scope checks on the endpoints that accept bearer tokens, and a per-tenant ACL pre-filter in Aeira's search layer with no admin bypass across the tenant boundary. Admin role is required for KMS rotation and shred, PII reveal, and SCIM token management; audit seal accepts either an admin session or a bearer token carrying the audit-seal scope.
Privileged access management?
Admin-gated and sealed into the audit chain. One gap disclosed. Full answer
Admin endpoints can be additionally restricted at the ingress layer by source-IP allow-list or mTLS; that is your ingress configuration, not something the chart ships. PII reveal is admin-gated and sealed into the Merkle chain on every attempt, revealed or denied. The sealed record is deliberately thinner than the local log line: it carries a one-way reference to the masked token rather than the token itself, never the revealed span, and of the operator's free-text justification only whether one was given plus a stable hash of it, so the record about a disclosure does not repeat the disclosure. Two privileged actions refuse rather than proceed unevidenced: a PII reveal returns 409 if auditing has been switched off, and a crypto-shred returns 503 if no sealed audit sink exists or 409 if auditing is off, with nothing destroyed in either case. KMS rotation and SCIM token issue and revoke are sealed best-effort, because blocking a rotation or a de-provisioning during an incident is the worse failure. One gap remains and we would rather you hear it here than find it in a log review: the audit-seal operation itself still writes a log line rather than a sealed record.
How are agent and tool capabilities provisioned and restricted?
A fixed capability set compiled in; apps declared in manifests; server-side enforcement. Full answer
Two layers, and it helps to keep them apart. Apps and utilities are declared in YAML manifests (a recognize block plus a transform pipeline, MCP-native where they call a tool). That is the surface admins author and provision org-wide; users can build their own desktop Apps, and where the two overlap, admin-provisioned Apps take precedence. The capability set itself is not YAML: it is a fixed list compiled into the server, so no manifest edit can invent a new capability or widen an existing one. Enforcement is server-side and on by default across session middleware, admin-only middleware, OAuth scope checks, a per-tool capability check in the agent loop, and Aeira's per-tenant SQL ACL pre-filter. On top of that sits an optional policy decision point for rule-based capability policy; it ships in the box but is inert under the default governance profile, so a deployment that wants it turns it on deliberately and we walk through that configuration during a pilot. Most launcher actions are deterministic and never invoke an agent or a model at all.
4. Audit logging
What we log, how it is sealed, and where it goes.
Do you log security events?
Yes. Structured logs to your collector, or a direct SIEM forwarder. Full answer
Yes, and there are two ways to get them out. Collector path: structured JSON to stdout (set LOG_FORMAT=json; default in production overlay), which Vector, Fluent Bit, OpenTelemetry Collector, or Datadog Agent picks up like any other workload. Direct path: bolt-api ships an authenticated forwarder with backends for Splunk HEC, Microsoft Sentinel via the HMAC-signed collector API, Microsoft Sentinel via a Data Collection Rule with AAD OAuth2 and automatic token refresh, and syslog over TCP. The direct forwarder is off by default and no shipped values file turns it on, so plan it as a deployment step. It sends best-effort with no retry buffer today, so if you need guaranteed delivery under a transient SIEM outage, put a collector in front. SIEM export guide is shared during pilot evaluation.
What events are logged?
Authority-changing events are sealed. Exclusions and gaps are listed. Full answer
Two different things travel under the word logging here, and the distinction is the whole answer. SEALED INTO THE MERKLE CHAIN: authorization decisions, retrieval access on every exit path, Aeira search on every exit path (denied, router-allowed and keyword-allowed alike), tool executions, model calls, agent decisions, admin policy changes, the security-relevant identity transitions (sign-in success and failure, sign-out, session delegation, delegated-session revocation, and session attach both accepted and refused), and the privileged key and identity operations (KMS rotation, crypto-shred, PII reveal, SCIM token issue and revoke). Failures are sealed alongside successes, deliberately: a chain that shows only successes cannot tell nobody-tried from somebody-tried-a-thousand-times, and a refused session attach is the exact shape of a session-fixation attempt. Aeira search cannot serve a result it did not record: the audit sink is required to run a search at all, so the failure mode is a 503 rather than a silent unaudited answer. EXCLUDED ON PURPOSE, and pinned that way by tests so the decision cannot drift: OAuth access-token refresh, which grants no new authority (same user, same session, same already-consented scopes) and fires roughly hourly per active session, and the read-only SCIM token list. Sealing those would bury the transitions that do change authority. NOT SEALED TODAY, and a gap rather than a choice: the audit-seal operation itself, which still emits only a structured log line. Also unsealed: Aeira's catalog routes (browse, entity, graph, kinds), Bolt's connector-side search endpoints, and agent-run state transitions, which are written to a run-history table rather than the chain. Audit lines are tagged event_type=security for SIEM-side index separation.
Is the audit log tamper-evident?
Yes. Merkle-sealed and signed. Full answer
Yes. Bolt-api maintains a Merkle-sealed audit chain in Postgres. Operators (or scheduled jobs) can call an admin endpoint to roll a date range into a signed Merkle root, and verify integrity via a corresponding verify endpoint. Recommended pattern: nightly seal plus export root to write-once storage (S3 Object Lock, Azure Immutable Blob, GCS Bucket Lock).
How long are logs retained?
You set retention in your own SIEM. We list framework minimums. Full answer
Customer-owned retention via their SIEM or log archive. Recommended minimums by framework: SOC 2 CC7 1 year, HIPAA 164.312(b) 6 years, GDPR Art. 30 at least 1 year, SEC 17a-4 6 years (WORM), PCI-DSS 10.7 1 year with 3 months online.
5. Incident response
Plan, classification, and notification SLAs.
Do you have a documented incident-response plan?
Yes. Five phases, SEV1 to SEV4. Full answer
Yes. Sparcle runs a documented five-phase incident-response plan (detect, triage, stabilize, mitigate, validate-and-communicate) covering software-vendor-side incidents: a CVE in a shipped Bolt or Aeira release, a cosign signing-key or build-pipeline compromise, a sub-processor breach in our delivery chain. SEV1-4 classification with acknowledgement and patch SLAs published on /trust/incident-response and binding at every stage. A maturation path on the same page documents how coverage tiers activate with customer contracts. The deeper runbook is shared under NDA during pilot evaluation. Customer-instance incidents in the customer's own deployment are run by the customer's IR; Sparcle supports those with advisories, patches, and direct technical assistance.
What is your breach notification SLA?
Set by your MSA, BAA or DPA. HIPAA 60 days, GDPR 72 hours by default. Full answer
Notification cadence is codified in the executed MSA, BAA, or DPA and takes precedence over the public defaults on /trust/incident-response. HIPAA breach notification (60 days per 45 CFR 164.404) and GDPR breach notification (72 hours per Art. 33) bind Sparcle for vendor-side scenarios (a CVE in our shipped software, a signing-key compromise, a sub-processor breach affecting our delivery chain). Customer-side incidents in the customer's own deployment fall under the customer's own BAAs and DPAs with their LLM, cloud, and IdP providers.
Have you experienced a security incident in the past 12 months?
No production incidents involving customer data. Full answer
No production incidents involving customer data have occurred. Internal-only incidents (build pipeline regressions, dev environment issues) are tracked separately and not customer-affecting.
6. Sub-processors and data flow
Where customer data lives.
Who are your sub-processors?
Sparcle is not a data processor for customer data. See the disclosure. Full answer
See the Sub-Processor Disclosure on this Trust Center. Summary: in customer-hosted deployments (the only shipping topology), Sparcle is not a data processor. Customer data flows from customer-deployed bolt-api pods to customer-configured LLM providers, customer-managed databases, and customer-owned cloud infrastructure. Sparcle's own sub-processors handle Sparcle internal operations (source code on GitHub, etc.), not customer data.
Where is customer data stored?
In your own infrastructure. Not with Sparcle. Full answer
In the customer's own infrastructure. Sparcle does not host or process customer data in any shipping topology. Verifiable by inspecting the deployed Helm chart's NetworkPolicy egress rules and by the absence of phone-home traffic.
Do you transfer data internationally?
You decide. Data stays where you deploy. Full answer
Customer-determined. Bolt is deployed wherever the customer's Kubernetes cluster sits; LLM endpoints can be pinned to the customer's geography. Where the customer routes data to a US LLM provider from an EU jurisdiction, the customer's relationship with that LLM provider governs the Art. 44 and following transfer mechanisms (SCCs).
7. Vulnerability management
Scanning, patching, and disclosure.
How do you handle vulnerabilities in dependencies?
Gated scans on both server and desktop paths. Full answer
Two paths, and they are gated differently. Server image: cargo audit and cargo deny run on every push, and the image build gates on Trivy CRITICAL and HIGH findings with exit-code 1, so a failing scan blocks the push and cosign signing never runs on an image that did not pass. A CycloneDX SBOM is emitted per build on that path. Desktop client: a two-tier gate runs a sub-second secret scan of the staged diff on every commit, and at release, against a frozen build point, scans the whole tree for secrets, Rust advisories, npm advisories across the production dependency graph, and licence obligations, with CVSS base scores computed from each advisory’s own vector rather than copied from a summary. Every check reports pass, fail or unknown, so a scanner that could not run is never recorded as a scanner that found nothing. Customers can scan independently with their own tooling against the published SBOM.
Patch SLA?
Critical 7 days, high 30, medium 90. Full answer
CRITICAL: 7 days. HIGH: 30 days. MEDIUM: 90 days. LOW: next quarterly release. Patches ship as new container image tags signed with cosign.
Do you have a vulnerability disclosure policy?
Yes, with safe harbor and 90-day coordinated disclosure. Full answer
Yes. See the Vulnerability Disclosure page on this Trust Center. One-business-day acknowledgement, 7-30-90 day patch SLA, 90-day coordinated disclosure, good-faith safe harbor.
8. Business continuity and disaster recovery
RTO, RPO, and failover.
RTO and RPO?
Depends on your deployment. Nightly backup by default. Full answer
Customer-deployment-dependent (a single-replica customer has different recovery characteristics than a multi-region multi-replica customer). Bolt-api's backup CronJob default schedule is nightly; customers can tune. Named values for typical topologies are in the disaster-recovery documentation shared during pilot evaluation.
How often do you test backups?
Restore drills are yours; ours is run deliberately, not on every release. Full answer
Backup restore drills are part of the customer's DR procedure. The chart ships the CronJob; the restore drill is the customer's operational practice. On our side the deep restore test (a full restore into a temporary database, with verification) is a maintained tooling target we run deliberately, not a step wired into a release pipeline. We would rather state that than let you assume a gate exists.
Multi-region failover?
Multi-replica in a region; multi-region is your routing. Full answer
Customer-deployment-dependent. The chart supports multi-replica within a region via replicaCount, HPA, and pod anti-affinity; multi-region requires customer-side traffic-routing infrastructure.
9. Personnel security
Background checks, training, and confidentiality.
Background checks on engineering staff?
Not yet. The policy is drafted; a vendor is not chosen. Full answer
Pending. The background check policy is drafted; adopting it and choosing a vendor are in progress.
Security training?
Not yet. The policy is drafted; the first round has not run. Full answer
Pending. The annual security awareness training policy is drafted; the first training round has not run yet.
Confidentiality agreements?
Yes, for all personnel. Full answer
All Sparcle personnel sign confidentiality and IP-assignment agreements as a condition of engagement. Sub-processors are bound by their own agreements and sub-processor commitments.
10. Software supply chain
Signing, SBOM, and SLSA.
Are images signed?
Yes. Cosign keyless with a transparency log. Full answer
Yes. Every image is signed via cosign keyless (Fulcio and Rekor transparency log). Verification recipe and admission policy guidance (Sigstore Policy Controller, Kyverno) are in the deployment documentation shared during pilot evaluation.
Is the desktop application signed, and is it the same chain as the images?
Signed, on a different chain from the images. Full answer
It is signed, but it is a different chain, and the distinction matters when you are assessing us. The server image chain is cosign keyless with Sigstore transparency-log verification. The macOS desktop client is signed with an Apple Developer ID certificate and notarized by Apple, the Windows installer is signed with an SSL.com EV certificate, and every auto-update bundle is separately signed with an Ed25519 key whose public half is compiled into the client, so the updater refuses any bundle it cannot verify. Every release also ships a minisign-signed SHA-256 manifest covering all of its artifacts, and the exact commands to verify a download yourself are published at /trust/verify-download, so you can confirm any of this without taking our word for it. Cosign, Trivy gating, and per-build SBOM attestation described elsewhere on this page apply to the server image path; do not assume they cover the desktop artifact.
Do you provide SBOMs?
Yes. SPDX attestation on images, CycloneDX per release. Full answer
Yes, and the two formats are not the same artifact. The image carries the builder-generated SPDX attestation, verifiable via cosign verify-attestation type spdx. The CycloneDX JSON is produced separately and published with the release. Ask for the one you need and we will point you at it for the exact version you are evaluating.
SLSA level?
None claimed. Full answer
We do not claim a SLSA level, and the honest reason is on our supply-chain page: releases are built on our own machines, and a machine cannot meaningfully attest to itself. Signed build provenance needs an identity a build service issues, and that is what would move us onto the SLSA ladder. What exists today is a different and narrower thing: a Sigstore identity signature over the release manifest, recorded in a public transparency log, which proves who signed and when but not how the artifacts were produced.
11. AI and LLM-specific questions
How prompts and PII flow at the LLM boundary.
Do you send our data to OpenAI, Anthropic, or other LLM providers?
Only to the provider you configure, with PII masked. Full answer
Only the data flowing through agents the customer configures, to the LLM provider the customer configures. Sparcle does not see this data. PII is pseudonymized at the model-call boundary by default: HMAC tokens replace detected PII before the prompt leaves, and the original values are restored in the response. The masking is active where a detector is configured; the always-on regex floor is what provides it out of the box.
Can I use my own LLM?
Yes. Any OpenAI-compatible endpoint. Full answer
Yes. Configure APP__LLM__BASE_URL, APP__LLM__API_KEY, and APP__LLM__MODEL to point at any OpenAI-compatible endpoint (self-hosted Ollama, vLLM, Azure OpenAI, customer's BYO LLM).
Is the PII detection comprehensive?
Regex floor always on; a named-entity model is optional. Full answer
Regex-based detection covers 10+ PII types out of the box (email, phone, SSN, credit card, US passport, US driver license, and others), and it is the always-on floor. Regex alone cannot see free-text PHI: names without format anchors, clinical notes, non-US identifiers. For that there is now a named-entity model, and the honest detail matters. On Apple Silicon Macs it is bundled and runs in-process in the same binary, with no Python service and no network call, so an air-gapped deployment needs nothing extra. On Windows, Linux and Intel Macs the shipped build does not include it and it runs as a separate scanner you deploy. In every case it is off until an administrator turns it on, deliberately, so nothing silently loads a model or changes masking behaviour on upgrade. If you enable it on a build that cannot run it, the admin API reports the engine as degraded and names the engine actually in effect rather than quietly doing nothing. Customers can supply additional regex patterns per tier.
Is the LLM output filtered?
Yes, with a known limit. Structural controls carry the weight. Full answer
Yes. PII is pseudonymized before the model call; on the response, tokens are restored to the original values for display to the user. Output filtering runs in the security pipeline and covers a known set of jailbreak and prompt-injection phrasings, plus a failsafe that blocks a response still carrying an unrestored token. Treat pattern matching as the weaker half of the defence: it recognises phrasings it has seen, and a new one will not match. The controls we lean on are the ones that do not depend on recognising an attack, and they are set out at /trust/agent-safety.
Question we did not answer here?
Version 0.2. Counsel review pending. We answer once, publish here, and the next reviewer benefits.