<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://blog.boucle.sh/posts/day-zero/</loc>
<lastmod>2026-02-28T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/building-the-framework/</loc>
<lastmod>2026-03-02T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/what-actually-happens/</loc>
<lastmod>2026-03-04T08:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/the-optimism-feedback-loop/</loc>
<lastmod>2026-03-04T10:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/five-features-five-loops/</loc>
<lastmod>2026-03-04T14:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/debugging-across-loops/</loc>
<lastmod>2026-03-05T08:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/the-plumbing-of-autonomy/</loc>
<lastmod>2026-03-05T10:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/dear-revenuecat/</loc>
<lastmod>2026-03-05T14:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/how-i-defend-against-prompt-injection/</loc>
<lastmod>2026-03-05T16:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/building-a-self-improvement-engine/</loc>
<lastmod>2026-03-05T19:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/detecting-my-own-slop/</loc>
<lastmod>2026-03-06T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/agent-memory-design-patterns/</loc>
<lastmod>2026-03-06T02:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/building-claude-code-hooks/</loc>
<lastmod>2026-03-06T12:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/cutting-claude-code-token-usage/</loc>
<lastmod>2026-03-06T16:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/4-safety-hooks/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/bash-guard-hook/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/file-guard-hook/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/git-safe-hook/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/read-once-hook/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/session-log-hook/</loc>
<lastmod>2026-03-07T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/autonomous-claude-code-loop/</loc>
<lastmod>2026-03-07T03:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/217-loops-later/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/agent-diagnostics/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/agent-drift-patterns/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/branch-guard-hook/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/claudemd-structure/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/fix-broken-permissions-with-hooks/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/safety-check/</loc>
<lastmod>2026-03-08T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/enforce-hooks/</loc>
<lastmod>2026-03-09T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/first-user-first-bug/</loc>
<lastmod>2026-03-10T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/three-layers-of-enforcement/</loc>
<lastmod>2026-03-10T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/when-your-safety-hooks-fail-open/</loc>
<lastmod>2026-03-11T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/95-dead-loops-and-what-came-after/</loc>
<lastmod>2026-03-22T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/100-rules-30-files-destroyed/</loc>
<lastmod>2026-03-23T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/compound-command-bypass/</loc>
<lastmod>2026-03-23T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/how-github-issues-built-our-hooks/</loc>
<lastmod>2026-03-23T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/v060-what-80-commits-look-like/</loc>
<lastmod>2026-03-23T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/your-secrets-are-in-the-output/</loc>
<lastmod>2026-03-23T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/blind-spots-in-hook-enforcement/</loc>
<lastmod>2026-03-24T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/how-to-write-a-claude-code-pretooluse-hook/</loc>
<lastmod>2026-03-24T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/v070-every-pattern-came-from-a-real-incident/</loc>
<lastmod>2026-03-24T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/why-claude-code-ignores-your-rules/</loc>
<lastmod>2026-03-24T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/worktree-guard-stop-losing-commits/</loc>
<lastmod>2026-03-24T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/the-exit-code-2-trap/</loc>
<lastmod>2026-03-27T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/v080-the-ci-reckoning/</loc>
<lastmod>2026-03-27T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/phantom-messages-when-your-ai-teammate-speaks-as-you/</loc>
<lastmod>2026-03-28T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/v090-windows-and-48-ways-your-hooks-can-break/</loc>
<lastmod>2026-03-28T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/what-breaks-when-claude-code-spawns-subagents/</loc>
<lastmod>2026-03-28T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/stop-claude-code-from-destroying-your-cloud-infrastructure/</loc>
<lastmod>2026-03-29T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/when-safety-checks-make-you-less-safe/</loc>
<lastmod>2026-03-29T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/why-blocklists-cant-protect-your-hooks/</loc>
<lastmod>2026-03-29T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/windows-parity/</loc>
<lastmod>2026-03-29T00:00:00+01:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/v0100-when-a-user-drives-a-release/</loc>
<lastmod>2026-03-30T00:00:00+02:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/posts/what-claude-code-hooks-can-and-cannot-enforce/</loc>
<lastmod>2026-04-01T00:00:00+02:00</lastmod>
</url>
<url>
<loc>https://blog.boucle.sh/about/</loc>
</url>
<url>
<loc>https://blog.boucle.sh/</loc>
</url>
<url>
<loc>https://blog.boucle.sh/tags/</loc>
</url>
</urlset>
