Something happened to a colleague of mine last month that’s been keeping me up at night, and I think every Beancount practitioner needs to hear this.
His laptop was stolen from his car outside a coffee shop. Standard smash-and-grab, nothing sophisticated. The laptop had Beancount ledger files for 22 small business clients—five years of transaction history, bank account numbers embedded in importer configs, Social Security numbers in payroll metadata, the works.
Here’s the thing that hit me hardest: plain text files are human readable. If that laptop wasn’t encrypted, the thief (or whoever they sell it to) can literally open any text editor and read every financial transaction. No database password to crack. No application-level security to bypass. Just… open the file.
I immediately went through my own setup and realized I had some serious gaps. Let me walk through the threat scenario and what I found.
The Threat Model for Beancount Practitioners
Physical theft is the #1 risk. We’re not running cloud servers with firewalls. We’re carrying laptops to client meetings, working from coffee shops, leaving bags in cars. The attack surface is literally “steal the hardware.”
What’s exposed in a typical Beancount setup:
- Ledger files (.beancount) — Full transaction history, account names that often include bank identifiers
- Importer configs — May contain API keys, bank credentials, file paths revealing client names
- Git history — EVERYTHING is preserved. Even if you deleted sensitive data from HEAD, it’s in the commit history
- CSV downloads — Bank statements sitting in Downloads folder with full account numbers
- Email attachments — Client documents, tax forms, W-2s
My Security Audit Results (Embarrassing)
I checked my own setup. Here’s what I found:
| Security Layer | Status | Notes |
|---|---|---|
| FileVault (disk encryption) | But I didn’t know if my backup drive was encrypted (it wasn’t) | |
| Git remote encryption | Using private GitHub repo, but GitHub employees theoretically have access | |
| GPG encryption on ledgers | Never set it up | |
| Backup encryption | Time Machine to external drive, unencrypted | |
| 72-hour breach response plan | I wouldn’t know who to call first | |
| Client security disclosure | Clients don’t know I use plain text files |
That table was a wake-up call.
The Regulatory Reality in 2026
This isn’t just about best practices anymore. The FTC Safeguards Rule now applies to CPA firms and financial service providers—including bookkeepers who handle client financial data. Key requirements:
- Written Information Security Program (WISP) — You need a documented security program
- Breach notification within 30 days (FTC) to the Commission if 500+ consumers affected
- State laws vary — California’s 2026 update requires notification within 30 days; some states are stricter
- IRS guidance for tax professionals — Specific protocol for reporting data theft
If my colleague’s laptop contained data for clients across multiple states (which mine does—I have clients in TX, CA, IL, and NY), he’d need to comply with EACH state’s notification law. That’s a nightmare of different timelines, different AG offices, different disclosure formats.
The Questions I Can’t Answer Yet
-
Is FileVault enough? If my MacBook is stolen while sleeping (not powered off), is the encryption actually protecting data? I’ve read conflicting things about cold boot attacks.
-
Should I GPG-encrypt individual ledger files? This would break my workflow (can’t just run
bean-checkon encrypted files), but it adds a layer of protection. -
Self-hosted Git vs. GitHub private repo — Is GitHub “secure enough” for client financial data? Or do I need a self-hosted Gitea instance with additional encryption?
-
What goes in an engagement letter about security? Do I disclose to clients that their data lives in plain text files on my laptop? Will that terrify them?
-
Breach response plan — If my laptop is stolen TODAY, what are literally the first 5 things I should do? In what order?
I’m in the process of building out a proper security posture, but I’d love to hear from others. Especially those of you managing multiple client ledgers.
How secure is YOUR Beancount setup right now? If your laptop was stolen from your car this afternoon, would you be ready?
Be honest. I was embarrassed by my own audit, and I think most of us would be.