1

Install the Mac app

Open the DMG, drag the app to Applications, and grant Full Disk Access when asked. You only do this once per Mac.

2

Create & browse

Click Create Archive. Watch it snapshot, decode, scan attachments, seal, and verify — then browse, search, and open attachments right there on your Mac. It also writes to your iCloud Drive automatically.

3

Read on iPhone too (optional)

Want your archive in your pocket? Install the iPhone app and allow iCloud access. Once the bundle syncs, the same chat list, search, and attachments appear on your phone.

The yearly workflow

Message Keeper is designed to be run roughly once a year, so you can safely use Apple's Keep Messages: 1 Year setting:

  1. Year 1 — initial archive. Run the Mac archiver. It captures everything in your history — probably several years' worth — into one bundle.
  2. Add the reminder. Use the post-archive button to add a yearly calendar event so you never forget.
  3. Verify the archive before changing anything in Messages. Browse it in the Mac reader. Wait for iCloud Drive to finish syncing to your iPhone, then open the same archive on the iPhone. Confirm both views look complete — open a few chats, open a few attachments, check a recent chat and an old one. This is your safety gate — don't skip it.
  4. Now — and only now — turn on 1-Year. Open Messages → Settings → General → Keep Messages → One Year. Messages immediately starts pruning anything older than a year. You do this yourself; the archiver never touches your Messages settings.
  5. Year 2 and on. When the reminder fires, run the archiver again — click the ↻ Update Archive button in the Mac app or use File → Update Archive (⌘⇧A). It merges only the new messages, already-archived rows are a no-op, and attachments are deduplicated. Re-verify before the next reminder cycle.

As long as you archive at least once a year and verify before each pruning cycle, you lose nothing — and your Mac stays fast.

The app never enables Keep Messages: 1 Year for you. Flipping a setting that immediately deletes data is your call, not ours. The archiver tells you when it's safe to do it; you do it.

What's archived — and what isn't

Archived: every chat (1:1 and group), every message (text, attachments, reactions, replies, edited and retracted markers), every attachment that exists on disk at archive time, and sender names resolved via Contacts where available.

Not archived: messages that were unsent and had their text wiped (only the tombstone remains), stickers, message effects, GamePigeon games (these aren't real attachments), and read receipts (they aren't stored in the source database).

Common questions

It says "No Messages database found." +
Almost always Full Disk Access isn't granted to the app. Open System Settings → Privacy & Security → Full Disk Access and toggle the app on, then restart it.
My iPhone shows "No Archive Found." +
iCloud hasn't finished syncing yet. Open the Files app → iCloud Drive and confirm the Honk Message Keeper folder (the iCloud Drive container display name) and archive.imarchive are visible. Make sure both devices are signed into the same iCloud account with iCloud Drive enabled. Large bundles can take a while on first sync — Wi-Fi helps.
Some attachments say "Not Included." +
That's expected for messages whose attachment was never on disk — for example, the sender deleted it before you archived, or it was a sticker or effect that doesn't persist. The app tells you this honestly rather than pretending the file can be re-downloaded.
The first attachment takes a long time to open. +
Attachments live in one tar file, and iCloud can't partially download it. The first time you tap an attachment in a session, the whole tar downloads; every tap after that is instant. It's a one-time wait per session.
Will this ever modify my Messages history? +
No. The Mac app opens your Messages database read-only and immutable, and never writes to ~/Library/Messages/ under any circumstances. It only ever writes the new archive bundle.
"Archive run already in progress." +
A previous archive is either still running (wait for it) or crashed and left a stale lockfile. The app reclaims dead locks automatically; if it doesn't, remove ~/.imessage-archiver/archive.lock manually.
How do I update an existing archive? +
Open the Mac app and choose Update Archive (⌘⇧A). It reads only new messages since the last run and appends them; existing messages aren't reprocessed and attachments are deduplicated by SHA-256. Your iPhone sees the update within a minute or two.
Where do I report a bug? +
On GitHub Issues. Include your macOS or iOS version, what you did, what you expected, and what happened. The info output is safe to share — it contains counts and timestamps, never message text.