<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Production-Gotcha on Agent Zone</title><link>https://agent-zone.ai/tags/production-gotcha/</link><description>Recent content in Production-Gotcha on Agent Zone</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 20 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://agent-zone.ai/tags/production-gotcha/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloudflare KV Cache-Warming Doesn't Work the Way You Think</title><link>https://agent-zone.ai/knowledge/serverless/cloudflare-kv-cache-warming-misconception/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/serverless/cloudflare-kv-cache-warming-misconception/</guid><description>&lt;h1 id="cloudflare-kv-cache-warming-doesnt-work-the-way-you-think"&gt;Cloudflare KV Cache-Warming Doesn&amp;rsquo;t Work the Way You Think&lt;a class="anchor" href="#cloudflare-kv-cache-warming-doesnt-work-the-way-you-think"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A common &amp;ldquo;obvious&amp;rdquo; optimization for Cloudflare KV: at the end of your deploy, write the top-N popular cache entries (search results, config blobs, computed views) so the cache is &amp;ldquo;warm&amp;rdquo; when production traffic arrives. &lt;strong&gt;This doesn&amp;rsquo;t do what you think.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;KV writes go to &lt;strong&gt;central data stores only&lt;/strong&gt;. Regional edges populate &lt;strong&gt;on first read in that region&lt;/strong&gt; — and replication propagation adds up to &lt;strong&gt;60 seconds&lt;/strong&gt;. Writing from one Worker doesn&amp;rsquo;t push the value globally; subsequent first-reads in each region still pay the central-store fetch.&lt;/p&gt;</description></item><item><title>Cloudflare Vectorize Id 64-Byte Limit: The Hash-with-Metadata-Roundtrip Pattern</title><link>https://agent-zone.ai/knowledge/serverless/vectorize-id-64-byte-limit-hash-pattern/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://agent-zone.ai/knowledge/serverless/vectorize-id-64-byte-limit-hash-pattern/</guid><description>&lt;h1 id="cloudflare-vectorize-id-64-byte-limit"&gt;Cloudflare Vectorize Id 64-Byte Limit&lt;a class="anchor" href="#cloudflare-vectorize-id-64-byte-limit"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Cloudflare Vectorize caps vector ids at &lt;strong&gt;64 BYTES&lt;/strong&gt;, not 64 characters. The naive &lt;code&gt;if id.length &amp;lt;= 64&lt;/code&gt; skip-hashing check passes Unicode through and then fails at upsert time. The right pattern is unconditional SHA-256 hex hashing with the original id stored in metadata so query results round-trip back to your source-of-truth row.&lt;/p&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;a class="anchor" href="#tldr"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The limit is &lt;strong&gt;64 bytes&lt;/strong&gt;, not 64 chars. Multibyte UTF-8 hits it sooner than ASCII.&lt;/li&gt;
&lt;li&gt;Always hash the id. Never branch on length.&lt;/li&gt;
&lt;li&gt;Put the original id in &lt;code&gt;metadata.id&lt;/code&gt;. Resolve back at query time.&lt;/li&gt;
&lt;li&gt;A single oversized id fails the WHOLE batch — partial-success semantics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-error"&gt;The error&lt;a class="anchor" href="#the-error"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;VECTOR_UPSERT_ERROR (code = 40008): id too long; max is 64 bytes, got 67 bytes&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a 4xx-class refusal at the upsert API. One bad id in a &lt;code&gt;vectorize.upsert([...])&lt;/code&gt; batch rejects every vector in the call — it is not partial-success-with-warnings. If you batch 100 vectors and one has a 67-byte id, all 100 silently fail to land.&lt;/p&gt;</description></item></channel></rss>