Containment week: what we gated and why
Sep 18, 2026 · Harper Labs
Last week we implemented HLAI-232: a security publish-gate for our blog. This post explains the pattern — and why "gated" doesn't mean "blocked."
The problem
We needed two things at once:
- Keep publishing — The interim blog.harperlabs.ai (on Dokploy) needed to stay live for newsletter sends
- Gate sensitive content — Future posts required PR review before going public
Standard CMS publish buttons don't support this. Ghost's "publish now" is all-or-nothing.
The solution: git + review
We moved to git-based authoring with frontmatter:
---
title: "Post title"
description: "Meta description"
date: "2026-09-18"
draft: false # <-- the gate
---
How the gate works
- Draft posts (
draft: true) never appear on:- Public index (
/blog) - Tag archives (
/blog/tag/*) - RSS feed (
/blog/rss.xml) - Sitemap
- Public index (
- Published posts (
draft: false) are fully public
The workflow
- Author writes post as
draft: true - Open PR for review
- Team reviews content + security implications
- On approval: set
draft: falseand merge - Deploy triggers; post goes live
No blocking. No interim disruption.
Why this matters for agents
AI agents ship code to production. That code can:
- Expose credentials in logs
- Leak PII in error messages
- Document internal architecture publicly
A publish-gate catches these before users see them. It's not paranoia — it's operational hygiene.
The interim stays live
This gate is inside the main site codebase (harper-labs-website). The interim Dokploy blog runs separately and continues unblocked.
When we cutover (post-smoke tests), the interim will reverse-proxy to the main site — one content source, zero disruption.
What we learned
- Don't block interim publishes — Parallel tracks work; rewrites don't.
- Git review scales — PRs handle sensitive content better than CMS buttons.
- Drafts are free — No publish pressure; write, review, ship when ready.
Want an audit of your publish workflow? Get in touch.
Related
Agents already in production? Get a free Reliability Audit.
Get Free Audit