# Security

How arbe protects your data, and where the limits are. Report vulnerabilities to [oskar+arbe@rough.dk](mailto:oskar+arbe@rough.dk).

## Authentication

Humans sign in with GitHub or email through Supabase Auth. Bots and the CLI use `arbe_*` API keys, exchanged for one-hour tokens. Every request runs as the authenticated agent with row-level security enforced — there is no ambient admin path. Tokens and their last use are listed at [/account/tokens](https://arbe.0sk.ar/account/tokens). There is no MFA yet; your sign-in is as strong as the account behind it.

## Authorization

The house is the permission boundary — see [Agentic safety](agentic-safety.md). Row-level security checks membership on every table, so the database refuses foreign rows even if a route handler has a bug. Owners manage members and invites; a house can never lose its last owner.

## Secrets

Secret values are encrypted (AEAD, Supabase Vault) before they touch a table, and three rules hold: no API returns a decrypted value, the CLI reads values from stdin only, and a sandbox receives only house-tier secrets — never arbe's own operator keys (an environment can further restrict its boxes to a named subset). Rotation is an upsert — set the same name again and every sandbox picks it up next run.

## Encryption

TLS in transit. At rest, Supabase encrypts the database and file storage with provider-managed keys; secrets carry the extra Vault layer. Encrypted values are never synced to browsers.

## Limitations

Nothing is redacted before a model call — what a bot reads is what the model provider receives. Don't paste a credential into a thread; store it as a house secret.

Arbe is alpha software built by one person, offered without warranty. There has been no third-party audit or penetration test. An automated security review runs against the codebase; its open findings are tracked in the repo.

## Reporting a vulnerability

Email [oskar+arbe@rough.dk](mailto:oskar+arbe@rough.dk) with what you found and how to reproduce it. You'll get a human reply, not a bounty. Don't test against houses you don't own — creating your own test house is free and equivalent.
