---
title: "Security checklist · Builder's guide · Chappell AI"
description: "Go through this list before real books go on the system."
url: https://chappellai.us/guide/16-security-checklist/
---

Builder's guide · Section 16

# Security checklist

Go through this list before real books go on the system.

-   The writer key is only on the console server, in a secret store. It is not in the repository, logs, or anything sent to a browser.
-   The administrator key is stored separately and is not used by the console.
-   The console's writer is a `poster` scoped to its own companies, not all companies unless needed.
-   The API is reachable only over TLS, and only from your writers' networks.
-   The console's database and the books' database use different logins, and neither login can reach the other database.
-   Sessions are HttpOnly, SameSite=Strict cookies, stored as hashes and revocable. Failed sign-ins are rate-limited.
-   Writes require a custom header that cross-site forms cannot send.
-   `/v1/system/*` (writer administration) is not relayed.
-   Every permission and approval is enforced on the server, with “not your own” also as a table constraint.
-   Person-name fields (`prepared_by`, `closed_by`, approver) are written by the server from the session.
-   The audit table refuses updates and deletes, and links each write to GAAPcore's request id.
-   A key rotation has been rehearsed: issue, deploy, revoke.
-   If an AI model is used for voice or search, it sees the command list only, never ledger data, and it cannot write without the on-screen confirmation.
