Compliance Policies & Access Controls

Role-based access in the UI (read-only observer vs. full owner), API key scoping, how to lock down a company to read-only for external auditors, and policy enforcement at the API layer.

Compliance Policies and Data Governance

What you'll learn

Configure Paperclip for regulated industries, enforce data handling policies at the company level, and understand what controls Paperclip provides vs what you must implement yourself.

What Paperclip Controls

Control Paperclip provides
Multi-tenant isolation company_id boundary on every table
Spending limits Budget auto-pause at agent and company level
Human oversight Approval gates with audit trail
Data encryption At-rest encryption via Supabase/PostgreSQL; in-transit via TLS
Secret management API keys via env vars, never stored in DB
Audit logging Automatic logging of all agent actions and approvals

What You Must Implement

Control Your responsibility
User authentication Supabase Auth, Auth0, or your own JWT
Role-based access Which humans can see/manage which company
Data residency Choose EU/US Supabase region or self-host
PII handling Scrub PII from issue descriptions before seeding
Model data usage Review Anthropic/OpenAI data usage policies

PII Scrubbing Before Issue Seeding

Never seed customer PII directly into issues.description:

// Before creating an issue from a support ticket:
import { scrub } from './pii-scrubber';  // your scrubbing library

const safeDescription = scrub(ticket.body, {
  patterns: ['email', 'phone', 'credit_card', 'ssn'],
  replacement: '[REDACTED]'
});

await createIssue({ description: safeDescription });

GDPR Deletion

For the right to erasure, implement a deletion cascade:

-- Remove all data for a specific user across all their activity
-- (assumes a user_id column on issues if users submit them directly)
DELETE FROM cost_events WHERE agent_id IN (SELECT id FROM agents WHERE /* user filter */);
DELETE FROM approvals   WHERE requesting_agent_id IN (...);
DELETE FROM issues      WHERE company_id = 'user-company-id';
DELETE FROM agents      WHERE company_id = 'user-company-id';
DELETE FROM companies   WHERE id = 'user-company-id';

Model Usage Policies

Before using Anthropic or OpenAI in a regulated context:

For HIPAA environments: use the http adapter pointing at a self-hosted Ollama or a HIPAA BAA-covered service.

Restricting Issue Content via Policy

Add input validation in your issue-creation API layer:

// Reject issues whose descriptions match a PII pattern
function validateIssueContent(description: string) {
  const PII_REGEX = /\b\d{3}-\d{2}-\d{4}\b/; // SSN pattern
  if (PII_REGEX.test(description)) {
    throw new Error('Issue description contains PII; scrub before submitting');
  }
}

Checkpoint ✓

Sign in for progress tracking & Q&A →