Security
An agent that issues refunds and edits orders has to be safe by design. The model proposes; the policy engine authorizes. Every action is checked against your config before it runs.
How an agent that touches money stays safe
Several independent layers stand between the model and your customers' data and money.
Deterministic policy engine
Every action is checked against your config before it runs. The model can't bypass a refund cap.
Idempotent operations
Every refund, edit, and return uses an idempotency key. Retries can't double-charge.
Full audit trail
Every action stored with the model's reasoning, the policy decisions, and the before and after state.
Protected Customer Data
Name, email, address, and phone are handled under Shopify's Protected Customer Data requirements: redacted before the model, encrypted per store, deleted on request.
PII redacted before AI
Names, emails, addresses, and phone numbers are replaced with placeholders before any message text reaches the model. The provider never trains on your data.
Per-store encryption
Customer data is encrypted at rest with a key unique to your store. That per-store key is itself wrapped by a key held in AWS KMS, so raw keys are never stored in plaintext. Data is deleted on request, and on uninstall the store's key is crypto-shredded, leaving any residual ciphertext unrecoverable.
Prompt-injection screening
A separate model screens every customer message for injection attempts before the main agent ever sees it.
No fabricated actions
A guard blocks the agent from telling a customer it did something it never actually executed.
Fraud guardrails
Risk scoring plus deterministic checks block over-cap refunds, delivered-but-claimed-lost, and bad-faith claims.
Verified inbound, signed links
Webhooks are HMAC-verified, photo-upload and survey links are signed expiring tokens, and the public chat is rate-limited. Public forms are protected by a bot challenge (Turnstile) and a managed WAF.
Frozen config per session
Your policy is snapshotted per conversation, so a mid-session config change can't retroactively change what was already authorized.
What we attest to
How we handle and protect your customers' data.
Encryption in transit and at rest
TLS 1.2+ in transit (via our hosting edge), plus per-store AES-256-GCM encryption of customer data at rest. Each store's data-encryption key is itself wrapped by a key held in AWS KMS.
Encrypted backups
Database backups are encrypted at rest.
Least-privilege access
Access to production systems is limited and protected with multi-factor authentication.
Audit logging
Every action the agent takes is recorded with the model's reasoning and the policy decision behind it.
Incident response
We notify affected merchants of a data breach without undue delay, in line with the 72-hour GDPR obligation.
Data minimization
We request only the protected fields needed to resolve tickets. Nothing extra.
PII redaction before the model
Direct identifiers (name, email, address, phone) plus card numbers and government IDs are replaced with placeholders before any message text reaches the model.
Full data handling details live in our Privacy Policy.