{
  "slug": "wrangler-links-containers-to-durable-object-exports-807c862651ab",
  "title": "wrangler links containers to Durable Object exports",
  "tools": [
    "wrangler"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-08-18T12:59:15.000Z",
  "announced_at": "2026-08-18T12:59:15.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "For a live `durable-object` export in `created` or `expecting-transfer` state, configure `storage: \"sqlite\"` and set `container` to an existing container’s `name`.",
    "examples": [
      "{\"name\":\"my-worker\",\"main\":\"worker.js\",\"compatibility_date\":\"2026-07-01\",\"containers\":[{\"name\":\"my-container\",\"image\":\"./Dockerfile\",\"max_instances\":1}],\"exports\":{\"MyContainerDO\":{\"type\":\"durable-object\",\"storage\":\"sqlite\",\"container\":\"my-container\"}}}"
    ],
    "gotchas": [
      "Version: 4.124.0",
      "exports.<Class>.type (required): Set to `\"durable-object\"` for a Durable Object class export.",
      "exports.<Class>.state: Lifecycle state; `created` is the default. `container` is allowed only for `created` or `expecting-transfer`.",
      "exports.<Class>.storage (required): For `created` or `expecting-transfer`, set to `\"sqlite\"` to use `container`.",
      "exports.<Class>.container: Name of an entry in the top-level `containers` array; requires SQLite storage.",
      "containers[].name (required): Container identifier; required when `class_name` is omitted so the export can reference it.",
      "containers[].image (required): Container image, such as a local Dockerfile path.",
      "containers[].max_instances: Maximum concurrent running container instances; defaults to 20.",
      "`container` is valid only on live `durable-object` exports in `created` or `expecting-transfer` state and requires `storage: \"sqlite\".",
      "The existing `containers[].class_name` direction remains supported; if both directions specify a relationship, they must agree.",
      "A container reference must name an existing container; two Durable Object exports cannot claim the same container; each container must link to a Durable Object; container names must be unique.",
      "A container's `class_name` cannot name a Durable Object whose storage is `legacy-kv`.",
      "Two containers cannot attach to the same Durable Object.",
      "Docs conflict: The current Containers configuration docs say to configure exactly one linkage direction. The release note says either direction may be used, provided both agree; follow the release note for the stated change. Current docs are dated Aug 28, 2026, after the card’s Aug 18, 2026 release."
    ]
  },
  "why_it_matters": "Configure a container-backed Durable Object in a Worker.",
  "before": "The documented earlier linkage used `containers[].class_name` to name the Durable Object class.",
  "sources": [
    "https://github.com/cloudflare/workers-sdk/releases/tag/wrangler%404.124.0",
    "https://developers.cloudflare.com/containers/reference/wrangler-configuration/",
    "https://developers.cloudflare.com/workers/wrangler/configuration/?ref=blog.cloudflare.com"
  ],
  "rank": 0.98053,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v1+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "augsep-20261008",
    "verdict_id": "augsep-20261008:augsep-20261008-16d3e402e03e1277-0:gate",
    "evidence_hash": "baa291efa027e8179c99798264f688e215bad6da3c8131a38b15864e53edf22c"
  },
  "review": {
    "draft_hash": "f1b45085ccb64fbb75d2cc5d6b318af1733ef58abbf474414b034ecb41b57cf7",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-07T00:00:00.000Z",
    "decision": "augsep-20261008:gate",
    "reason": "3 of 3 judge runs approved with p_yes >= 0.9 (mean 0.98 >= 0.9; 2 needed) and Jev gave 0.75 (>= 0.6 needed)."
  }
}
