{
 "schemaVersion": "1.0.0",
 "generatedAt": "2026-08-14T05:20:51.429Z",
 "claimContract": "A result describes only what this exact build did in this exact test. It does not establish purpose, retention, training use, sale, safety, or behavior in another account, region, operating system, or scenario.",
 "method": {
  "platform": "macOS 26.2 arm64 (Darwin 25.2.0)",
  "network": "Existing operator VPN remained enabled. The lab does not claim a geographic cohort.",
  "capture": "Fresh HOME/tool config/workspace per run; one pinned mitmproxy 12.2.3 process and CA per run; minimal environment with fixed invalid canary key.",
  "redaction": "No credentials, header values, query strings, request bodies, response bodies, prompts, model output, file paths, or IP addresses are published.",
  "repeats": 3,
  "statusVocabulary": [
   "observed",
   "not_observed",
   "opaque",
   "inconclusive",
   "not_tested"
  ],
  "captureWindowMs": 45000,
  "acquisition": "Exact official npm package plus platform-native optional binary; package lock and binary are hashed.",
  "requestDefinition": "HTTP request recorded when observed at the proxy; a null response status means the request began but no response completed before the process/window ended."
 },
 "tool": {
  "id": "codex-cli",
  "name": "Codex CLI",
  "vendor": "OpenAI",
  "version": "0.147.0",
  "binarySha256": "19c4f144c5226a9f17c58e6f0fa854843b0f77a6eb420f40e2745a12f10f5d37",
  "testedAt": "2026-08-14T04:37:40.190Z",
  "path": "/codex/telemetry",
  "feed": "/codex/telemetry/feed.xml",
  "status": "measured",
  "headline": "Startup contacted OpenAI and GitHub infrastructure in 3/3 final runs; two OpenAI routes varied across batches.",
  "summary": "The final batch contacted OpenAI API/ChatGPT/file hosts plus GitHub API and codeload in 3/3 runs. A prior same-version validation batch observed the curated-plugin and files.openai.com routes in only 1/3 runs, so those routes are explicitly variable across batches, not universal.",
  "scenario": "Exact official npm native binary, fresh CODEX_HOME and workspace, ignored user config and rules, ephemeral read-only run, fixed prompt, deliberately invalid API key, up to a 45-second observation window. Authentication failed as designed.",
  "configs": [
   {
    "id": "default",
    "label": "Documented defaults",
    "repeats": 3,
    "requestCounts": [
     20,
     20,
     20
    ],
    "destinations": [
     {
      "host": "api.github.com",
      "owner": "GitHub",
      "classification": "third_party",
      "observedIn": 3,
      "paths": [
       {
        "method": "GET",
        "path": "/repos/openai/plugins",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       },
       {
        "method": "GET",
        "path": "/repos/openai/plugins/git/ref/heads/main",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       },
       {
        "method": "GET",
        "path": "/repos/openai/plugins/zipball/:opaque",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          302
         ],
         [
          302
         ],
         [
          302
         ]
        ]
       }
      ]
     },
     {
      "host": "api.openai.com",
      "owner": "OpenAI",
      "classification": "first_party",
      "observedIn": 3,
      "paths": [
       {
        "method": "GET",
        "path": "/v1/responses",
        "counts": [
         7,
         7,
         7
        ],
        "status": "observed",
        "responseStatuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       },
       {
        "method": "POST",
        "path": "/v1/responses",
        "counts": [
         6,
         6,
         6
        ],
        "status": "observed",
        "responseStatuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       }
      ]
     },
     {
      "host": "chatgpt.com",
      "owner": "OpenAI",
      "classification": "first_party",
      "observedIn": 3,
      "paths": [
       {
        "method": "GET",
        "path": "/backend-api/plugins/export/curated",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       },
       {
        "method": "GET",
        "path": "/backend-api/plugins/featured",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       }
      ]
     },
     {
      "host": "codeload.github.com",
      "owner": "GitHub",
      "classification": "third_party",
      "observedIn": 3,
      "paths": [
       {
        "method": "GET",
        "path": "/openai/plugins/legacy.zip/:opaque",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          429
         ],
         [
          429
         ],
         [
          429
         ]
        ]
       }
      ]
     },
     {
      "host": "files.openai.com",
      "owner": "OpenAI",
      "classification": "first_party",
      "observedIn": 3,
      "paths": [
       {
        "method": "GET",
        "path": "/content",
        "counts": [
         1,
         1,
         1
        ],
        "status": "observed",
        "responseStatuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       }
      ]
     }
    ]
   }
  ],
  "evidence": {
   "harness": "scripts/capture-phone-home.mjs",
   "sanitizer": "scripts/mitm-sanitize.py",
   "harnessCommit": "570faf2dbfb76de94e48bfe72b3ff566561be91a",
   "harnessSha256": "e15404a103d7631bded68ed63fdf472289a288f0cb7ad015938713f0bd81acdc",
   "sanitizerSha256": "d3696012c3fecbf76a09bea086d87e9db714dc9a9aef8589c3eaa46bf6d5e487",
   "captureMetadataSha256": {
    "default": "493766808ae90f8753bf2d392f5e884cca4e67de40e0fc2d3446dd6251bfbfa2"
   },
   "rawCaptureSha256": [
    "ef8618eb79666075ff208acfcd76e838a470e80fa89c8ad606b855e5726a6239",
    "3d716d7656f2a87677c7f75a1fa4cdeb50ce586f7e42cafb12b71bdb6a71f93b",
    "3439cdd288c8b3f9dc5d157894c5a35ca9b515d1e42b4321574091d5278b2f0a"
   ],
   "sanitizedManifestSha256": [
    "69052b8fa700b1d5c8f2f43f9b3be053d4796aa910ccc970c6e395e0bd378a42",
    "9e68b2ed6dbed5875ee0d1046a15cc3fbd4adeba715f81ee185a17178ed66672",
    "22d453bb7529e20e07dba7a1f1f136f7d7d3259d47152ac3eb8c08f6f7238810"
   ],
   "publicSanitizedManifests": [
    "/api/phone-home/runs/codex-cli/0.147.0/default/1.json?sha256=69052b8fa700b1d5c8f2f43f9b3be053d4796aa910ccc970c6e395e0bd378a42",
    "/api/phone-home/runs/codex-cli/0.147.0/default/2.json?sha256=9e68b2ed6dbed5875ee0d1046a15cc3fbd4adeba715f81ee185a17178ed66672",
    "/api/phone-home/runs/codex-cli/0.147.0/default/3.json?sha256=22d453bb7529e20e07dba7a1f1f136f7d7d3259d47152ac3eb8c08f6f7238810"
   ]
  },
  "limitations": [
   "The API key was intentionally invalid, so no successful model response or tool execution occurred.",
   "The final evidence uses macOS arm64 and one network path behind the operator's existing VPN.",
   "Two routes reproduced 3/3 in the final batch but only 1/3 in a prior same-version validation batch; they are variable across batches.",
   "The process exited on authentication failure before the 45-second ceiling in all final runs.",
   "Host contact does not establish payload purpose, server retention, training use or privacy impact."
  ],
  "manifest": "/evidence/codex-cli-0.147.0.json",
  "protocolVersion": "2.0.0",
  "acquisition": {
   "package": "@openai/codex",
   "method": "official npm package with platform-native optional dependency",
   "packageLockSha256": "20e1d6cd41430b1a66ab336f9cfc7236aac8fb76d8d336058ae7b77488001985",
   "reportedVersion": "codex-cli 0.147.0"
  },
  "observation": {
   "captureWindowMs": 45000,
   "platform": "darwin-arm64",
   "osRelease": "25.2.0",
   "osVersion": "Darwin Kernel Version 25.2.0: Tue Nov 18 21:09:56 PST 2025; root:xnu-12377.61.12~1/RELEASE_ARM64_T6041"
  },
  "history": [
   {
    "version": "0.146.0",
    "testedAt": "2026-08-13T21:18:10Z",
    "manifest": "/api/phone-home/history/2026-08-13.json"
   }
  ],
  "validationBatches": [
   {
    "label": "pre-publication same-binary validation",
    "protocolNote": "Captured before per-run timestamps and harness provenance were added; retained to disclose cross-batch variability, not used as final evidence.",
    "version": "0.147.0",
    "binarySha256": "19c4f144c5226a9f17c58e6f0fa854843b0f77a6eb420f40e2745a12f10f5d37",
    "packageLockSha256": "20e1d6cd41430b1a66ab336f9cfc7236aac8fb76d8d336058ae7b77488001985",
    "repeats": 3,
    "requestCounts": [
     18,
     20,
     18
    ],
    "captureMetadataSha256": "a7a14fb64cc4ee82d4df056e831c9ac01998f2ac18f49ae0d9747d74ad6ca3b3",
    "rawCaptureSha256": [
     "8658bc146ae48113c50e334546d0b65197e6646f9a485a3a52cb2d24d876cbeb",
     "fdc7610c72ce6d4e52d6f87a24241c67092cd7556460ce0a18ac6cfea2e72fdd",
     "d25cf66434712cfa537a12c3553ea062e0bfa95fc1a1344537d5df03b80d2b85"
    ],
    "sanitizedManifestSha256": [
     "8cdfae66c65ca6ead38896a312e0c3058d5d3643c9496ddc7d5df2200d3ff97a",
     "2391adfe01edf32552900758434af45e5c69352bd61eda69c852a96982c45083",
     "4810c8e02ee9a3a7ec254627b1acae6f104f6c681631c1a9dba738912c52e719"
    ],
    "publicSanitizedManifests": [
     "/api/phone-home/runs/codex-cli/0.147.0/validation-default/1.json?sha256=8cdfae66c65ca6ead38896a312e0c3058d5d3643c9496ddc7d5df2200d3ff97a",
     "/api/phone-home/runs/codex-cli/0.147.0/validation-default/2.json?sha256=2391adfe01edf32552900758434af45e5c69352bd61eda69c852a96982c45083",
     "/api/phone-home/runs/codex-cli/0.147.0/validation-default/3.json?sha256=4810c8e02ee9a3a7ec254627b1acae6f104f6c681631c1a9dba738912c52e719"
    ],
    "destinations": [
     {
      "host": "api.github.com",
      "observedIn": 3,
      "routes": [
       {
        "method": "GET",
        "path": "/repos/openai/plugins",
        "counts": [
         1,
         1,
         1
        ],
        "statuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       },
       {
        "method": "GET",
        "path": "/repos/openai/plugins/git/ref/heads/main",
        "counts": [
         1,
         1,
         1
        ],
        "statuses": [
         [
          200
         ],
         [
          200
         ],
         [
          200
         ]
        ]
       },
       {
        "method": "GET",
        "path": "/repos/openai/plugins/zipball/:opaque",
        "counts": [
         1,
         1,
         1
        ],
        "statuses": [
         [
          302
         ],
         [
          302
         ],
         [
          302
         ]
        ]
       }
      ]
     },
     {
      "host": "api.openai.com",
      "observedIn": 3,
      "routes": [
       {
        "method": "GET",
        "path": "/v1/responses",
        "counts": [
         7,
         7,
         7
        ],
        "statuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       },
       {
        "method": "POST",
        "path": "/v1/responses",
        "counts": [
         6,
         6,
         6
        ],
        "statuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       }
      ]
     },
     {
      "host": "chatgpt.com",
      "observedIn": 3,
      "routes": [
       {
        "method": "GET",
        "path": "/backend-api/plugins/export/curated",
        "counts": [
         0,
         1,
         0
        ],
        "statuses": [
         [],
         [
          200
         ],
         []
        ]
       },
       {
        "method": "GET",
        "path": "/backend-api/plugins/featured",
        "counts": [
         1,
         1,
         1
        ],
        "statuses": [
         [
          401
         ],
         [
          401
         ],
         [
          401
         ]
        ]
       }
      ]
     },
     {
      "host": "codeload.github.com",
      "observedIn": 3,
      "routes": [
       {
        "method": "GET",
        "path": "/openai/plugins/legacy.zip/:opaque",
        "counts": [
         1,
         1,
         1
        ],
        "statuses": [
         [
          200
         ],
         [
          429
         ],
         [
          200
         ]
        ]
       }
      ]
     },
     {
      "host": "files.openai.com",
      "observedIn": 1,
      "routes": [
       {
        "method": "GET",
        "path": "/content",
        "counts": [
         0,
         1,
         0
        ],
        "statuses": [
         [],
         [
          200
         ],
         []
        ]
       }
      ]
     }
    ]
   }
  ]
 }
}