claudecode-omc 5.6.8 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.local/settings/settings.json +8 -0
  2. package/.local/skills/prompt-optimizer/SKILL.md +262 -19
  3. package/.omc-curation/ecc-selection.json +80 -0
  4. package/.omc-curation/governance.json +116 -0
  5. package/.omc-curation/sources.lock.json +30 -0
  6. package/README.md +78 -4
  7. package/bundled/manifest.json +6 -5
  8. package/bundled/upstream/anthropic-skills/.omc-source/bundle.json +18 -0
  9. package/bundled/upstream/anthropic-skills/.omc-source/provenance.json +399 -0
  10. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +18 -17
  11. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
  12. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +4 -4
  13. package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +2 -2
  14. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
  15. package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +2 -2
  16. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
  17. package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +2 -2
  18. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
  19. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
  20. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
  21. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
  22. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
  23. package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +3 -3
  24. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
  25. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +2 -2
  26. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +5 -5
  27. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +3 -1
  28. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +10 -4
  29. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +19 -1
  30. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +6 -2
  31. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +1 -1
  32. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +3 -3
  33. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +3 -2
  34. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
  35. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +10 -4
  36. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +113 -13
  37. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +14 -11
  38. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +2 -2
  39. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +4 -4
  40. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
  41. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
  42. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
  43. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
  44. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
  45. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +3 -3
  46. package/bundled/upstream/ecc/.omc-source/bundle.json +2 -1
  47. package/bundled/upstream/ecc/.omc-source/last-plan-apply.json +108 -24
  48. package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +3 -3
  49. package/bundled/upstream/ecc/.omc-source/provenance.json +563 -0
  50. package/bundled/upstream/ecc/agents/marketing-agent.md +159 -0
  51. package/bundled/upstream/ecc/agents/react-build-resolver.md +215 -0
  52. package/bundled/upstream/ecc/agents/react-reviewer.md +167 -0
  53. package/bundled/upstream/ecc/agents/typescript-reviewer.md +3 -0
  54. package/bundled/upstream/ecc/commands/harness-audit.md +17 -10
  55. package/bundled/upstream/ecc/commands/marketing-campaign.md +129 -0
  56. package/bundled/upstream/ecc/commands/react-build.md +187 -0
  57. package/bundled/upstream/ecc/commands/react-review.md +170 -0
  58. package/bundled/upstream/ecc/commands/react-test.md +265 -0
  59. package/bundled/upstream/ecc/skills/benchmark-optimization-loop/SKILL.md +69 -0
  60. package/bundled/upstream/ecc/skills/blender-motion-state-inspection/SKILL.md +164 -0
  61. package/bundled/upstream/ecc/skills/canary-watch/SKILL.md +9 -1
  62. package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +31 -9
  63. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +38 -4
  64. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +319 -12
  65. package/bundled/upstream/ecc/skills/data-throughput-accelerator/SKILL.md +72 -0
  66. package/bundled/upstream/ecc/skills/dynamic-workflow-mode/SKILL.md +123 -0
  67. package/bundled/upstream/ecc/skills/frontend-a11y/SKILL.md +446 -0
  68. package/bundled/upstream/ecc/skills/ito-basket-compare/SKILL.md +63 -0
  69. package/bundled/upstream/ecc/skills/ito-data-atlas-agent/SKILL.md +63 -0
  70. package/bundled/upstream/ecc/skills/ito-market-intelligence/SKILL.md +60 -0
  71. package/bundled/upstream/ecc/skills/ito-trade-planner/SKILL.md +67 -0
  72. package/bundled/upstream/ecc/skills/latency-critical-systems/SKILL.md +73 -0
  73. package/bundled/upstream/ecc/skills/marketing-campaign/SKILL.md +113 -0
  74. package/bundled/upstream/ecc/skills/nextjs-turbopack/SKILL.md +13 -0
  75. package/bundled/upstream/ecc/skills/parallel-execution-optimizer/SKILL.md +72 -0
  76. package/bundled/upstream/ecc/skills/prediction-market-oracle-research/SKILL.md +63 -0
  77. package/bundled/upstream/ecc/skills/prediction-market-risk-review/SKILL.md +60 -0
  78. package/bundled/upstream/ecc/skills/react-patterns/SKILL.md +341 -0
  79. package/bundled/upstream/ecc/skills/react-performance/SKILL.md +574 -0
  80. package/bundled/upstream/ecc/skills/react-testing/SKILL.md +423 -0
  81. package/bundled/upstream/ecc/skills/recsys-pipeline-architect/SKILL.md +114 -0
  82. package/bundled/upstream/ecc/skills/recursive-decision-ledger/SKILL.md +79 -0
  83. package/bundled/upstream/ecc/skills/social-publisher/SKILL.md +115 -0
  84. package/bundled/upstream/ecc/skills/team-agent-orchestration/SKILL.md +110 -0
  85. package/bundled/upstream/ecc/skills/uncloud/SKILL.md +343 -0
  86. package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +99 -0
  87. package/bundled/upstream/impeccable/.omc-source/bundle.json +20 -0
  88. package/bundled/upstream/impeccable/.omc-source/provenance.json +105 -0
  89. package/bundled/upstream/impeccable/agents/impeccable-manual-edit-applier.md +97 -0
  90. package/bundled/upstream/impeccable/skills/impeccable/SKILL.md +168 -0
  91. package/bundled/upstream/impeccable/skills/impeccable/reference/adapt.md +311 -0
  92. package/bundled/upstream/impeccable/skills/impeccable/reference/animate.md +201 -0
  93. package/bundled/upstream/impeccable/skills/impeccable/reference/audit.md +133 -0
  94. package/bundled/upstream/impeccable/skills/impeccable/reference/bolder.md +113 -0
  95. package/bundled/upstream/impeccable/skills/impeccable/reference/brand.md +108 -0
  96. package/bundled/upstream/impeccable/skills/impeccable/reference/clarify.md +288 -0
  97. package/bundled/upstream/impeccable/skills/impeccable/reference/codex.md +105 -0
  98. package/bundled/upstream/impeccable/skills/impeccable/reference/colorize.md +257 -0
  99. package/bundled/upstream/impeccable/skills/impeccable/reference/craft.md +123 -0
  100. package/bundled/upstream/impeccable/skills/impeccable/reference/critique.md +767 -0
  101. package/bundled/upstream/impeccable/skills/impeccable/reference/delight.md +302 -0
  102. package/bundled/upstream/impeccable/skills/impeccable/reference/distill.md +111 -0
  103. package/bundled/upstream/impeccable/skills/impeccable/reference/document.md +429 -0
  104. package/bundled/upstream/impeccable/skills/impeccable/reference/extract.md +69 -0
  105. package/bundled/upstream/impeccable/skills/impeccable/reference/harden.md +347 -0
  106. package/bundled/upstream/impeccable/skills/impeccable/reference/hooks.md +88 -0
  107. package/bundled/upstream/impeccable/skills/impeccable/reference/init.md +172 -0
  108. package/bundled/upstream/impeccable/skills/impeccable/reference/interaction-design.md +189 -0
  109. package/bundled/upstream/impeccable/skills/impeccable/reference/layout.md +161 -0
  110. package/bundled/upstream/impeccable/skills/impeccable/reference/live.md +718 -0
  111. package/bundled/upstream/impeccable/skills/impeccable/reference/onboard.md +234 -0
  112. package/bundled/upstream/impeccable/skills/impeccable/reference/optimize.md +258 -0
  113. package/bundled/upstream/impeccable/skills/impeccable/reference/overdrive.md +130 -0
  114. package/bundled/upstream/impeccable/skills/impeccable/reference/polish.md +241 -0
  115. package/bundled/upstream/impeccable/skills/impeccable/reference/product.md +60 -0
  116. package/bundled/upstream/impeccable/skills/impeccable/reference/quieter.md +99 -0
  117. package/bundled/upstream/impeccable/skills/impeccable/reference/shape.md +165 -0
  118. package/bundled/upstream/impeccable/skills/impeccable/reference/typeset.md +279 -0
  119. package/bundled/upstream/impeccable/skills/impeccable/scripts/command-metadata.json +94 -0
  120. package/bundled/upstream/impeccable/skills/impeccable/scripts/context-signals.mjs +225 -0
  121. package/bundled/upstream/impeccable/skills/impeccable/scripts/context.mjs +280 -0
  122. package/bundled/upstream/impeccable/skills/impeccable/scripts/critique-storage.mjs +242 -0
  123. package/bundled/upstream/impeccable/skills/impeccable/scripts/detect-csp.mjs +198 -0
  124. package/bundled/upstream/impeccable/skills/impeccable/scripts/detect.mjs +21 -0
  125. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/browser/injected/index.mjs +1735 -0
  126. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/cli/main.mjs +244 -0
  127. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4907 -0
  128. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
  129. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
  130. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +552 -0
  131. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1013 -0
  132. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
  133. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  134. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/findings.mjs +12 -0
  135. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
  136. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  137. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
  138. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/rules/checks.mjs +2671 -0
  139. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
  140. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
  141. package/bundled/upstream/impeccable/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  142. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-admin.mjs +574 -0
  143. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-before-edit.mjs +473 -0
  144. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook-lib.mjs +1286 -0
  145. package/bundled/upstream/impeccable/skills/impeccable/scripts/hook.mjs +61 -0
  146. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/design-parser.mjs +835 -0
  147. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/impeccable-paths.mjs +126 -0
  148. package/bundled/upstream/impeccable/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
  149. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/browser-script-parts.mjs +49 -0
  150. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/completion.mjs +19 -0
  151. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/event-validation.mjs +137 -0
  152. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
  153. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
  154. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
  155. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
  156. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/session-store.mjs +289 -0
  157. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/svelte-component.mjs +826 -0
  158. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/sveltekit-adapter.mjs +274 -0
  159. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/ui-core.mjs +180 -0
  160. package/bundled/upstream/impeccable/skills/impeccable/scripts/live/vocabulary.mjs +36 -0
  161. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-accept.mjs +812 -0
  162. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-browser-dom.js +146 -0
  163. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-browser-session.js +123 -0
  164. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-browser.js +11086 -0
  165. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-commit-manual-edits.mjs +1241 -0
  166. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-complete.mjs +75 -0
  167. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
  168. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
  169. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-inject.mjs +583 -0
  170. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-insert.mjs +272 -0
  171. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-manual-edit-evidence.mjs +363 -0
  172. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-poll.mjs +379 -0
  173. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-resume.mjs +94 -0
  174. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-server.mjs +1134 -0
  175. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-status.mjs +61 -0
  176. package/bundled/upstream/impeccable/skills/impeccable/scripts/live-wrap.mjs +894 -0
  177. package/bundled/upstream/impeccable/skills/impeccable/scripts/live.mjs +246 -0
  178. package/bundled/upstream/impeccable/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  179. package/bundled/upstream/impeccable/skills/impeccable/scripts/palette.mjs +633 -0
  180. package/bundled/upstream/impeccable/skills/impeccable/scripts/pin.mjs +214 -0
  181. package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +2 -1
  182. package/bundled/upstream/oh-my-claudecode/.omc-source/provenance.json +116 -0
  183. package/bundled/upstream/oh-my-claudecode/skills/autopilot/SKILL.md +7 -0
  184. package/bundled/upstream/oh-my-claudecode/skills/cancel/SKILL.md +1 -0
  185. package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +39 -5
  186. package/bundled/upstream/oh-my-claudecode/skills/hud/SKILL.md +1 -0
  187. package/bundled/upstream/oh-my-claudecode/skills/local-build-reminder/SKILL.md +78 -0
  188. package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +1 -1
  189. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/SKILL.md +26 -10
  190. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +3 -3
  191. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +6 -4
  192. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +1 -1
  193. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/04-welcome.md +2 -2
  194. package/bundled/upstream/oh-my-claudecode/skills/omc-teams/SKILL.md +6 -6
  195. package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +44 -32
  196. package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +45 -21
  197. package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +1 -1
  198. package/bundled/upstream/oh-my-claudecode/skills/self-improve/SKILL.md +7 -0
  199. package/bundled/upstream/oh-my-claudecode/skills/self-improve/scripts/resolve-paths.mjs +39 -15
  200. package/bundled/upstream/oh-my-claudecode/skills/team/SKILL.md +132 -90
  201. package/bundled/upstream/oh-my-claudecode/skills/ultragoal/SKILL.md +93 -0
  202. package/bundled/upstream/oh-my-claudecode/skills/ultraqa/SKILL.md +28 -13
  203. package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +7 -0
  204. package/bundled/upstream/superpowers/.omc-source/bundle.json +2 -1
  205. package/bundled/upstream/superpowers/.omc-source/provenance.json +63 -0
  206. package/package.json +2 -1
  207. package/src/catalog/source-catalog.js +10 -4
  208. package/src/cli/index.js +4 -0
  209. package/src/cli/plan.js +14 -2
  210. package/src/cli/setup.js +52 -13
  211. package/src/cli/skill.js +1 -1
  212. package/src/cli/source.js +271 -14
  213. package/src/config/sources.js +82 -1
  214. package/src/merge/content-patch.js +88 -0
  215. package/templates/merge-config.json +1 -8
  216. package/bundled/upstream/ecc/skills/strategic-compact/suggest-compact.sh +0 -54
@@ -27,7 +27,7 @@ def get_weather(location: str, unit: str = "celsius") -> str:
27
27
 
28
28
  # The tool runner handles the agentic loop automatically
29
29
  runner = client.beta.messages.tool_runner(
30
- model="claude-opus-4-7",
30
+ model="claude-opus-4-8",
31
31
  max_tokens=16000,
32
32
  tools=[get_weather],
33
33
  messages=[{"role": "user", "content": "What's the weather in Paris?"}],
@@ -72,7 +72,7 @@ async with stdio_client(StdioServerParameters(command="mcp-server")) as (read, w
72
72
  tools_result = await mcp_client.list_tools()
73
73
  # tool_runner is sync — returns the runner, not a coroutine
74
74
  runner = client.beta.messages.tool_runner(
75
- model="claude-opus-4-7",
75
+ model="claude-opus-4-8",
76
76
  max_tokens=16000,
77
77
  messages=[{"role": "user", "content": "Use the available tools"}],
78
78
  tools=[async_mcp_tool(t, mcp_client) for t in tools_result.tools],
@@ -90,7 +90,7 @@ from anthropic.lib.tools.mcp import mcp_message
90
90
 
91
91
  prompt = await mcp_client.get_prompt(name="my-prompt")
92
92
  response = await client.beta.messages.create(
93
- model="claude-opus-4-7",
93
+ model="claude-opus-4-8",
94
94
  max_tokens=16000,
95
95
  messages=[mcp_message(m) for m in prompt.messages],
96
96
  )
@@ -103,7 +103,7 @@ from anthropic.lib.tools.mcp import mcp_resource_to_content
103
103
 
104
104
  resource = await mcp_client.read_resource(uri="file:///path/to/doc.txt")
105
105
  response = await client.beta.messages.create(
106
- model="claude-opus-4-7",
106
+ model="claude-opus-4-8",
107
107
  max_tokens=16000,
108
108
  messages=[{
109
109
  "role": "user",
@@ -142,7 +142,7 @@ messages = [{"role": "user", "content": user_input}]
142
142
  # Agentic loop: keep going until Claude stops calling tools
143
143
  while True:
144
144
  response = client.messages.create(
145
- model="claude-opus-4-7",
145
+ model="claude-opus-4-8",
146
146
  max_tokens=16000,
147
147
  tools=tools,
148
148
  messages=messages
@@ -189,7 +189,7 @@ final_text = next(b.text for b in response.content if b.type == "text")
189
189
 
190
190
  ```python
191
191
  response = client.messages.create(
192
- model="claude-opus-4-7",
192
+ model="claude-opus-4-8",
193
193
  max_tokens=16000,
194
194
  tools=tools,
195
195
  messages=[{"role": "user", "content": "What's the weather in Paris?"}]
@@ -204,7 +204,7 @@ for block in response.content:
204
204
  result = execute_tool(tool_name, tool_input)
205
205
 
206
206
  followup = client.messages.create(
207
- model="claude-opus-4-7",
207
+ model="claude-opus-4-8",
208
208
  max_tokens=16000,
209
209
  tools=tools,
210
210
  messages=[
@@ -241,7 +241,7 @@ for block in response.content:
241
241
  # Send all results back at once
242
242
  if tool_results:
243
243
  followup = client.messages.create(
244
- model="claude-opus-4-7",
244
+ model="claude-opus-4-8",
245
245
  max_tokens=16000,
246
246
  tools=tools,
247
247
  messages=[
@@ -271,7 +271,7 @@ tool_result = {
271
271
 
272
272
  ```python
273
273
  response = client.messages.create(
274
- model="claude-opus-4-7",
274
+ model="claude-opus-4-8",
275
275
  max_tokens=16000,
276
276
  tools=tools,
277
277
  tool_choice={"type": "tool", "name": "get_weather"}, # Force specific tool
@@ -291,7 +291,7 @@ import anthropic
291
291
  client = anthropic.Anthropic()
292
292
 
293
293
  response = client.messages.create(
294
- model="claude-opus-4-7",
294
+ model="claude-opus-4-8",
295
295
  max_tokens=16000,
296
296
  messages=[{
297
297
  "role": "user",
@@ -319,7 +319,7 @@ uploaded = client.beta.files.upload(file=open("sales_data.csv", "rb"))
319
319
  # 2. Pass to code execution via container_upload block
320
320
  # Code execution is GA; Files API is still beta (pass via extra_headers)
321
321
  response = client.messages.create(
322
- model="claude-opus-4-7",
322
+ model="claude-opus-4-8",
323
323
  max_tokens=16000,
324
324
  extra_headers={"anthropic-beta": "files-api-2025-04-14"},
325
325
  messages=[{
@@ -364,7 +364,7 @@ for block in response.content:
364
364
  ```python
365
365
  # First request: set up environment
366
366
  response1 = client.messages.create(
367
- model="claude-opus-4-7",
367
+ model="claude-opus-4-8",
368
368
  max_tokens=16000,
369
369
  messages=[{"role": "user", "content": "Install tabulate and create data.json with sample data"}],
370
370
  tools=[{"type": "code_execution_20260120", "name": "code_execution"}]
@@ -376,7 +376,7 @@ container_id = response1.container.id
376
376
  # Second request: reuse the same container
377
377
  response2 = client.messages.create(
378
378
  container=container_id,
379
- model="claude-opus-4-7",
379
+ model="claude-opus-4-8",
380
380
  max_tokens=16000,
381
381
  messages=[{"role": "user", "content": "Read data.json and display as a formatted table"}],
382
382
  tools=[{"type": "code_execution_20260120", "name": "code_execution"}]
@@ -416,7 +416,7 @@ import anthropic
416
416
  client = anthropic.Anthropic()
417
417
 
418
418
  response = client.messages.create(
419
- model="claude-opus-4-7",
419
+ model="claude-opus-4-8",
420
420
  max_tokens=16000,
421
421
  messages=[{"role": "user", "content": "Remember that my preferred language is Python."}],
422
422
  tools=[{"type": "memory_20250818", "name": "memory"}],
@@ -442,7 +442,7 @@ memory = MyMemoryTool()
442
442
 
443
443
  # Use with tool runner
444
444
  runner = client.beta.messages.tool_runner(
445
- model="claude-opus-4-7",
445
+ model="claude-opus-4-8",
446
446
  max_tokens=16000,
447
447
  tools=[memory],
448
448
  messages=[{"role": "user", "content": "Remember my preferences"}],
@@ -477,7 +477,7 @@ class ContactInfo(BaseModel):
477
477
  client = anthropic.Anthropic()
478
478
 
479
479
  response = client.messages.parse(
480
- model="claude-opus-4-7",
480
+ model="claude-opus-4-8",
481
481
  max_tokens=16000,
482
482
  messages=[{
483
483
  "role": "user",
@@ -496,7 +496,7 @@ print(contact.interests) # ["API", "SDKs"]
496
496
 
497
497
  ```python
498
498
  response = client.messages.create(
499
- model="claude-opus-4-7",
499
+ model="claude-opus-4-8",
500
500
  max_tokens=16000,
501
501
  messages=[{
502
502
  "role": "user",
@@ -530,7 +530,7 @@ data = json.loads(text)
530
530
 
531
531
  ```python
532
532
  response = client.messages.create(
533
- model="claude-opus-4-7",
533
+ model="claude-opus-4-8",
534
534
  max_tokens=16000,
535
535
  messages=[{"role": "user", "content": "Book a flight to Tokyo for 2 passengers on March 15"}],
536
536
  tools=[{
@@ -555,7 +555,7 @@ response = client.messages.create(
555
555
 
556
556
  ```python
557
557
  response = client.messages.create(
558
- model="claude-opus-4-7",
558
+ model="claude-opus-4-8",
559
559
  max_tokens=16000,
560
560
  messages=[{"role": "user", "content": "Plan a trip to Paris next month"}],
561
561
  output_config={
@@ -49,7 +49,7 @@ print(environment.id) # env_...
49
49
  # 1. Create the agent (reusable, versioned)
50
50
  agent = client.beta.agents.create(
51
51
  name="Coding Assistant",
52
- model="claude-opus-4-7",
52
+ model="claude-opus-4-8",
53
53
  tools=[{"type": "agent_toolset_20260401", "default_config": {"enabled": True}}],
54
54
  )
55
55
 
@@ -68,7 +68,7 @@ import os
68
68
 
69
69
  agent = client.beta.agents.create(
70
70
  name="Code Reviewer",
71
- model="claude-opus-4-7",
71
+ model="claude-opus-4-8",
72
72
  system="You are a senior code reviewer.",
73
73
  tools=[
74
74
  {"type": "agent_toolset_20260401"},
@@ -311,7 +311,7 @@ client.beta.sessions.archive(session_id="sesn_011CZxAbc123Def456")
311
311
  # Agent declares MCP server (no auth here — auth goes in a vault)
312
312
  agent = client.beta.agents.create(
313
313
  name="MCP Agent",
314
- model="claude-opus-4-7",
314
+ model="claude-opus-4-8",
315
315
  mcp_servers=[
316
316
  {"type": "url", "name": "my-tools", "url": "https://my-mcp-server.example.com/sse"},
317
317
  ],
@@ -26,7 +26,7 @@ client = Anthropic::Client.new(api_key: "your-api-key")
26
26
 
27
27
  ```ruby
28
28
  message = client.messages.create(
29
- model: :"claude-opus-4-7",
29
+ model: :"claude-opus-4-8",
30
30
  max_tokens: 16000,
31
31
  messages: [
32
32
  { role: "user", content: "What is the capital of France?" }
@@ -46,7 +46,7 @@ end
46
46
 
47
47
  ```ruby
48
48
  stream = client.messages.stream(
49
- model: :"claude-opus-4-7",
49
+ model: :"claude-opus-4-8",
50
50
  max_tokens: 64000,
51
51
  messages: [{ role: "user", content: "Write a haiku" }]
52
52
  )
@@ -78,7 +78,7 @@ class GetWeather < Anthropic::BaseTool
78
78
  end
79
79
 
80
80
  client.beta.messages.tool_runner(
81
- model: :"claude-opus-4-7",
81
+ model: :"claude-opus-4-8",
82
82
  max_tokens: 16000,
83
83
  tools: [GetWeather.new],
84
84
  messages: [{ role: "user", content: "What's the weather in San Francisco?" }]
@@ -99,7 +99,7 @@ See the [shared tool use concepts](../shared/tool-use-concepts.md) for the tool
99
99
 
100
100
  ```ruby
101
101
  message = client.messages.create(
102
- model: :"claude-opus-4-7",
102
+ model: :"claude-opus-4-8",
103
103
  max_tokens: 16000,
104
104
  system_: [
105
105
  { type: "text", text: long_system_prompt, cache_control: { type: "ephemeral" } }
@@ -51,7 +51,7 @@ puts "Environment ID: #{environment.id}" # env_...
51
51
  # 1. Create the agent (reusable, versioned)
52
52
  agent = client.beta.agents.create(
53
53
  name: "Coding Assistant",
54
- model: :"claude-opus-4-7",
54
+ model: :"claude-opus-4-8",
55
55
  system_: "You are a helpful coding assistant.",
56
56
  tools: [{type: "agent_toolset_20260401"}]
57
57
  )
@@ -260,7 +260,7 @@ client.beta.sessions.delete(session.id)
260
260
  # Agent declares MCP server (no auth here — auth goes in a vault)
261
261
  agent = client.beta.agents.create(
262
262
  name: "GitHub Assistant",
263
- model: :"claude-opus-4-7",
263
+ model: :"claude-opus-4-8",
264
264
  mcp_servers: [
265
265
  {
266
266
  type: "url",
@@ -80,7 +80,7 @@ This file documents HTTP error codes returned by the Claude API, their common ca
80
80
  - Using deprecated model ID
81
81
  - Invalid API endpoint
82
82
 
83
- **Fix:** Use exact model IDs from the models documentation. You can use aliases (e.g., `claude-opus-4-7`).
83
+ **Fix:** Use exact model IDs from the models documentation. You can use aliases (e.g., `claude-opus-4-8`).
84
84
 
85
85
  ---
86
86
 
@@ -105,7 +105,7 @@ Some 400 errors are specifically related to parameter validation:
105
105
  - `budget_tokens` >= `max_tokens` in extended thinking
106
106
  - Invalid tool definition schema
107
107
 
108
- **Model-specific 400s on Opus 4.7:**
108
+ **Model-specific 400s on Opus 4.8 / 4.7:**
109
109
 
110
110
  - `temperature`, `top_p`, `top_k` are removed — sending any of them returns 400. Delete the parameter; see `shared/model-migration.md` → Per-SDK Syntax Reference.
111
111
  - `thinking: {type: "enabled", budget_tokens: N}` is removed — sending it returns 400. Use `thinking: {type: "adaptive"}` instead.
@@ -166,10 +166,10 @@ thinking: budget_tokens=10000, max_tokens=16000
166
166
 
167
167
  | Mistake | Error | Fix |
168
168
  | ------------------------------- | ---------------- | ------------------------------------------------------- |
169
- | `temperature`/`top_p`/`top_k` on Opus 4.7 | 400 | Remove the parameter (see `shared/model-migration.md`) |
170
- | `budget_tokens` on Opus 4.7 | 400 | Use `thinking: {type: "adaptive"}` |
169
+ | `temperature`/`top_p`/`top_k` on Opus 4.8 / 4.7 | 400 | Remove the parameter (see `shared/model-migration.md`) |
170
+ | `budget_tokens` on Opus 4.8 / 4.7 | 400 | Use `thinking: {type: "adaptive"}` |
171
171
  | `budget_tokens` >= `max_tokens` (older models) | 400 | Ensure `budget_tokens` < `max_tokens` |
172
- | Typo in model ID | 404 | Use valid model ID like `claude-opus-4-7` |
172
+ | Typo in model ID | 404 | Use valid model ID like `claude-opus-4-8` |
173
173
  | First message is `assistant` | 400 | First message must be `user` |
174
174
  | Consecutive same-role messages | 400 | Alternate `user` and `assistant` |
175
175
  | API key in code | 401 (leaked key) | Use environment variable |
@@ -24,7 +24,7 @@ This file contains WebFetch URLs for fetching current information from platform.
24
24
  | Topic | URL | Extraction Prompt |
25
25
  | ----------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
26
26
  | Extended Thinking | `https://platform.claude.com/docs/en/build-with-claude/extended-thinking.md` | "Extract extended thinking parameters, budget_tokens requirements, and usage examples" |
27
- | Adaptive Thinking | `https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking.md` | "Extract adaptive thinking setup, effort levels, and Claude Opus 4.7 usage examples" |
27
+ | Adaptive Thinking | `https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking.md` | "Extract adaptive thinking setup, effort levels, and Claude Opus 4.8 usage examples" |
28
28
  | Effort Parameter | `https://platform.claude.com/docs/en/build-with-claude/effort.md` | "Extract effort levels, cost-quality tradeoffs, and interaction with thinking" |
29
29
  | Tool Use | `https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview.md` | "Extract tool definition schema, tool_choice options, and handling tool results" |
30
30
  | Streaming | `https://platform.claude.com/docs/en/build-with-claude/streaming.md` | "Extract streaming event types, SDK examples, and best practices" |
@@ -82,6 +82,8 @@ Use these when a managed-agents binding, behavior, or wire-level detail isn't co
82
82
  | Define Outcomes | `https://platform.claude.com/docs/en/managed-agents/define-outcomes.md` | "Extract outcome definitions, evaluation hooks, and success criteria configuration" |
83
83
  | Sessions | `https://platform.claude.com/docs/en/managed-agents/sessions.md` | "Extract session lifecycle, status transitions, idle/terminated semantics, and resume rules" |
84
84
  | Environments | `https://platform.claude.com/docs/en/managed-agents/environments.md` | "Extract environment config (cloud/networking), management endpoints, and reuse model" |
85
+ | Self-Hosted Sandboxes | `https://platform.claude.com/docs/en/managed-agents/self-hosted-sandboxes.md` | "Extract config:{type:self_hosted}, ANTHROPIC_ENVIRONMENT_KEY, EnvironmentWorker.run/run_one, beta_agent_toolset, ant beta:worker poll/run, webhook-driven wake" |
86
+ | Self-Hosted Sandboxes — Security | `https://platform.claude.com/docs/en/managed-agents/self-hosted-sandboxes-security.md` | "Extract what the customer owns (hardening, egress, key custody, trust boundaries) vs what Anthropic cannot do" |
85
87
  | Events and Streaming | `https://platform.claude.com/docs/en/managed-agents/events-and-streaming.md` | "Extract event stream types, stream-first ordering, reconnect/dedupe, and steering patterns" |
86
88
  | Tools | `https://platform.claude.com/docs/en/managed-agents/tools.md` | "Extract built-in toolset, custom tool definitions, and tool result wire format" |
87
89
  | Files | `https://platform.claude.com/docs/en/managed-agents/files.md` | "Extract file upload, mount paths, session resources, and listing/downloading session outputs" |
@@ -21,6 +21,7 @@ All resources are under the `beta` namespace. Python and TypeScript share identi
21
21
  | Agents | `agents.create` / `retrieve` / `update` / `list` / `archive` | `Agents.New` / `Get` / `Update` / `List` / `Archive` |
22
22
  | Agent Versions | `agents.versions.list` | `Agents.Versions.List` |
23
23
  | Environments | `environments.create` / `retrieve` / `update` / `list` / `delete` / `archive` | `Environments.New` / `Get` / `Update` / `List` / `Delete` / `Archive` |
24
+ | Environment Work (self-hosted) | `environments.work.poller` / `stats` / `stop` | See `shared/managed-agents-self-hosted-sandboxes.md` |
24
25
  | Sessions | `sessions.create` / `retrieve` / `update` / `list` / `delete` / `archive` | `Sessions.New` / `Get` / `Update` / `List` / `Delete` / `Archive` |
25
26
  | Session Events | `sessions.events.list` / `send` / `stream` | `Sessions.Events.List` / `Send` / `StreamEvents` |
26
27
  | Session Threads | `sessions.threads.list` / `retrieve` / `archive`; `sessions.threads.events.list` / `stream` | `Sessions.Threads.List` / `Get` / `Archive`; `Sessions.Threads.Events.List` / `StreamEvents` |
@@ -35,10 +36,11 @@ All resources are under the `beta` namespace. Python and TypeScript share identi
35
36
  - Agents and Session Threads have **no delete** — only `archive`. Archive is **permanent**: the agent becomes read-only, new sessions cannot reference it, and there is no unarchive. Confirm with the user before archiving a production agent. Environments, Sessions, Vaults, Credentials, and Memory Stores have both `delete` and `archive`; Session Resources, Files, Skills, and Memories are `delete`-only; Memory Versions have neither — only `redact`.
36
37
  - Session resources use `add` (not `create`).
37
38
  - Go's event stream is `StreamEvents` (not `Stream`).
39
+ - The self-hosted worker is **not** under `client.beta.*` — it's `EnvironmentWorker` from `anthropic.lib.environments` / `@anthropic-ai/sdk/helpers/beta/environments`; only `environments.work.poller/stats/stop` are client methods.
38
40
 
39
41
  **Agent shorthand:** `agent` on session create accepts either a bare string (`agent="agent_abc123"` — uses latest version) or the full reference object (`{type: "agent", id: "agent_abc123", version: 123}`).
40
42
 
41
- **Model shorthand:** `model` on agent create accepts either a bare string (`model="claude-opus-4-7"` — uses `standard` speed) or the full config object (`{type: "model_config", id: "claude-opus-4-6", speed: "fast"}`). Note: `speed: "fast"` is only supported on Opus 4.6.
43
+ **Model shorthand:** `model` on agent create accepts either a bare string (`model="claude-opus-4-8"` — uses `standard` speed) or the full config object (`{id: "claude-opus-4-6", speed: "fast"}`). Note: `speed: "fast"` is only supported on Opus 4.6.
42
44
 
43
45
  ---
44
46
 
@@ -62,7 +64,7 @@ All resources are under the `beta` namespace. Python and TypeScript share identi
62
64
  | `GET` | `/v1/sessions` | ListSessions | List sessions (paginated) |
63
65
  | `POST` | `/v1/sessions` | CreateSession | Create a new session |
64
66
  | `GET` | `/v1/sessions/{session_id}` | GetSession | Get session details |
65
- | `POST` | `/v1/sessions/{session_id}` | UpdateSession | Update session metadata/title |
67
+ | `POST` | `/v1/sessions/{session_id}` | UpdateSession | Update session `metadata`/`title`, or `agent.tools`/`agent.mcp_servers`/`vault_ids` (session-local override; session must be `idle`). See `shared/managed-agents-core.md` → Updating the agent configuration mid-session. |
66
68
  | `DELETE` | `/v1/sessions/{session_id}` | DeleteSession | Delete a session |
67
69
  | `POST` | `/v1/sessions/{session_id}/archive` | ArchiveSession | Archive a session |
68
70
 
@@ -106,6 +108,10 @@ Per-subagent event streams in multiagent sessions. See `shared/managed-agents-mu
106
108
  | `POST` | `/v1/environments/{environment_id}` | UpdateEnvironment | Update environment |
107
109
  | `DELETE` | `/v1/environments/{environment_id}` | DeleteEnvironment | Delete environment. Returns 204. |
108
110
  | `POST` | `/v1/environments/{environment_id}/archive` | ArchiveEnvironment | Archive environment. Makes it **read-only**; existing sessions continue, new sessions cannot reference it. No unarchive — this is the terminal state. |
111
+ | `GET` | `/v1/environments/{environment_id}/work/stats` | WorkQueueStats | Self-hosted work-queue depth/pending/workers. `x-api-key` auth. See `shared/managed-agents-self-hosted-sandboxes.md`. |
112
+ | `POST` | `/v1/environments/{environment_id}/work/{work_id}/stop` | StopWork | Self-hosted: stop a claimed work item. `x-api-key` auth. |
113
+
114
+ For `type: "self_hosted"`, `config` is the bare `{"type": "self_hosted"}` — `networking` and `packages` do not apply.
109
115
 
110
116
  ## Vaults
111
117
 
@@ -203,7 +209,7 @@ Immutable per-mutation snapshots (`memver_...`) — the audit and rollback surfa
203
209
  ```json
204
210
  {
205
211
  "name": "string (required, 1-256 chars)",
206
- "model": "claude-opus-4-7 (required — bare string, or {id, speed} object)",
212
+ "model": "claude-opus-4-8 (required — bare string, or {id, speed} object)",
207
213
  "description": "string (optional, up to 2048 chars)",
208
214
  "system": "string (optional, up to 100,000 chars)",
209
215
  "tools": [
@@ -270,7 +276,7 @@ Immutable per-mutation snapshots (`memver_...`) — the audit and rollback surfa
270
276
  "name": "string (required)",
271
277
  "description": "string (optional)",
272
278
  "config": {
273
- "type": "cloud",
279
+ "type": "cloud | self_hosted",
274
280
  "networking": {
275
281
  "type": "unrestricted | limited (union — see SDK types)"
276
282
  },
@@ -96,7 +96,7 @@ Key fields returned by the API:
96
96
  const agent = await client.beta.agents.create(
97
97
  {
98
98
  name: "Coding Assistant",
99
- model: "claude-opus-4-7",
99
+ model: "claude-opus-4-8",
100
100
  system: "You are a helpful coding agent.",
101
101
  tools: [{ type: "agent_toolset_20260401"}],
102
102
  },
@@ -218,3 +218,21 @@ session = client.beta.sessions.create(
218
218
  )
219
219
  ```
220
220
 
221
+ ### Updating the agent configuration mid-session
222
+
223
+ `sessions.update()` can change `agent.tools`, `agent.mcp_servers` (including permission policies), and `vault_ids` on an **existing** session. This is a **session-local override** — it does not create a new agent version and does not propagate back to the agent object. The provided arrays are **full replacements**; to append one tool, `GET` the session, modify, and `POST` back. The session must be `idle` — interrupt first if running.
224
+
225
+ ```python
226
+ client.beta.sessions.update(
227
+ session.id,
228
+ agent={
229
+ "tools": [
230
+ {"type": "agent_toolset_20260401"},
231
+ {"type": "mcp_toolset", "mcp_server_name": "linear"},
232
+ ],
233
+ "mcp_servers": [{"type": "url", "name": "linear", "url": "https://mcp.linear.app/sse"}],
234
+ },
235
+ vault_ids=["vlt_..."],
236
+ )
237
+ ```
238
+
@@ -38,6 +38,10 @@ const env = await client.beta.environments.create({
38
38
  });
39
39
  ```
40
40
 
41
+ ### Self-hosted sandboxes
42
+
43
+ To run tool execution in **your own infrastructure** instead of Anthropic's, set `config: {type: "self_hosted"}` — the agent loop stays on Anthropic's side, but `bash` / file ops / code execute in a container you control via an outbound-polling worker. The `networking` block does not apply (you control egress). Resource mounting (`file`, `github_repository`) and memory stores behave differently — see `shared/managed-agents-self-hosted-sandboxes.md` for the worker, credentials, and cloud-vs-self-hosted comparison.
44
+
41
45
  ### Environment CRUD
42
46
 
43
47
  | Operation | Method | Path | Notes |
@@ -135,7 +139,7 @@ Repositories are attached for the lifetime of the session — to change which re
135
139
  const agent = await client.beta.agents.create(
136
140
  {
137
141
  name: 'GitHub Agent',
138
- model: 'claude-opus-4-7',
142
+ model: 'claude-opus-4-8',
139
143
  mcp_servers: [
140
144
  { type: 'url', name: 'github', url: 'https://api.githubcopilot.com/mcp/' },
141
145
  ],
@@ -169,7 +173,7 @@ import os
169
173
 
170
174
  agent = client.beta.agents.create(
171
175
  name="GitHub Agent",
172
- model="claude-opus-4-7",
176
+ model="claude-opus-4-8",
173
177
  mcp_servers=[{
174
178
  "type": "url",
175
179
  "name": "github",
@@ -13,7 +13,7 @@ The SDK sets the `managed-agents-2026-04-01` beta header automatically on all `c
13
13
  ```python
14
14
  orchestrator = client.beta.agents.create(
15
15
  name="Engineering Lead",
16
- model="{{OPUS_ID}}",
16
+ model="claude-opus-4-8",
17
17
  system="You coordinate engineering work. Delegate code review to the reviewer and test writing to the test agent.",
18
18
  tools=[{"type": "agent_toolset_20260401"}],
19
19
  multiagent={
@@ -8,11 +8,11 @@ Use this when a user wants to set up a Managed Agent from scratch. Three steps:
8
8
 
9
9
  ---
10
10
 
11
- Claude Managed Agents is a hosted agent: Anthropic runs the agent loop on its orchestration layer and provisions a sandboxed container per session where the agent's tools execute. You supply the agent config and the environment config; the harness — event stream, sandbox orchestration, prompt caching, context compaction, and extended thinking — is handled for you.
11
+ Claude Managed Agents is a hosted agent: Anthropic runs the agent loop on its orchestration layer and provisions a sandboxed container per session where the agent's tools execute (or, with a `self_hosted` environment, your own worker runs the tools — see `shared/managed-agents-self-hosted-sandboxes.md`). You supply the agent config and the environment config; the harness — event stream, sandbox orchestration, prompt caching, context compaction, and extended thinking — is handled for you.
12
12
 
13
13
  **What you supply:**
14
14
  - **An agent config** — tools, skills, model, system prompt. Reusable and versioned.
15
- - **An environment config** — the sandbox your agent's tools execute in (networking, packages). Reusable across agents.
15
+ - **An environment config** — the sandbox your agent's tools execute in (`cloud`: networking, packages; or `self_hosted`: your own infra). Reusable across agents.
16
16
 
17
17
  Each run of the agent is a **session**.
18
18
 
@@ -74,7 +74,7 @@ Emit as `resources: [{type: "file", file_id, mount_path}]`. Max 999 file resourc
74
74
  - [ ] Networking: unrestricted internet from the container, or lock egress to specific hosts? (If locked, MCP server domains must be in `allowed_hosts` or tools silently fail.)
75
75
  - [ ] Name?
76
76
  - [ ] Job (one or two sentences — becomes the system prompt)?
77
- - [ ] Model? (default `claude-opus-4-7`)
77
+ - [ ] Model? (default `claude-opus-4-8`)
78
78
 
79
79
  ---
80
80
 
@@ -17,7 +17,7 @@ If you're about to write `sessions.create()` with `model`, `system`, or `tools`
17
17
 
18
18
  **When generating code, separate setup from runtime.** `agents.create()` belongs in a setup script (or a guarded `if agent_id is None:` block), not at the top of the hot path. If the user's code calls `agents.create()` on every invocation, they're accumulating orphaned agents and paying the create latency for nothing. The correct shape is: create once → persist the ID (config file, env var, secrets manager) → every run loads the ID and calls `sessions.create()`.
19
19
 
20
- **To change the agent's behavior, use `POST /v1/agents/{id}` — don't create a new one.** Each update bumps the version; running sessions keep their pinned version, new sessions get the latest (or pin explicitly via `{type: "agent", id, version}`). See `shared/managed-agents-core.md` → Agents → Versioning.
20
+ **To change the agent's behavior, use `POST /v1/agents/{id}` — don't create a new one.** Each update bumps the version; running sessions keep their pinned version, new sessions get the latest (or pin explicitly via `{type: "agent", id, version}`). See `shared/managed-agents-core.md` → Agents → Versioning. To change `tools`/`mcp_servers`/`vault_ids` on **one running session** without touching the agent object, use `sessions.update()` — see `shared/managed-agents-core.md` → Updating the agent configuration mid-session.
21
21
 
22
22
  ## Beta Headers
23
23
 
@@ -49,6 +49,7 @@ Managed Agents is in beta. The SDK sets required beta headers automatically:
49
49
  | Define an outcome / rubric-graded iterate loop | `shared/managed-agents-outcomes.md` — `user.define_outcome` event, grader, `span.outcome_evaluation_*` events |
50
50
  | Coordinate multiple agents / subagents / threads | `shared/managed-agents-multiagent.md` — `multiagent: {type: "coordinator", agents: [...]}` on the agent, session threads, cross-posted tool confirmations |
51
51
  | Set up environments | `shared/managed-agents-environments.md` + language file |
52
+ | Run tool execution in your own infra / VPC (self-hosted sandbox) | `shared/managed-agents-self-hosted-sandboxes.md` — `config:{type:"self_hosted"}`, `ANTHROPIC_ENVIRONMENT_KEY`, `EnvironmentWorker.run()` / `ant beta:worker poll` |
52
53
  | Upload files / attach repos | `shared/managed-agents-environments.md` (Resources) |
53
54
  | Give agents persistent memory across sessions | `shared/managed-agents-memory.md` — memory stores, `memory_store` session resource, preconditions, versions/redact |
54
55
  | Store MCP credentials | `shared/managed-agents-tools.md` (Vaults section) |
@@ -63,5 +64,5 @@ Managed Agents is in beta. The SDK sets required beta headers automatically:
63
64
  - **SSE stream has no replay — reconnect with consolidation** — if the stream drops while a `agent.tool_use`, `agent.mcp_tool_use`, or `agent.custom_tool_use` is pending resolution (`user.tool_confirmation` for the first two, `user.custom_tool_result` for the last one), the session deadlocks (client disconnects → session idles → reconnect happens → no client resolution happens). On every (re)connect: open stream with `GET /v1/sessions/{id}/events/stream` , fetch `GET /v1/sessions/{id}/events`, dedupe by event ID, then proceed. See `shared/managed-agents-events.md` → Reconnecting after a dropped stream.
64
65
  - **Don't trust HTTP-library timeouts as wall-clock caps** — `requests` `timeout=(c, r)` and `httpx.Timeout(n)` are *per-chunk* read timeouts; they reset every byte, so a trickling connection can block indefinitely. For a hard deadline on raw-HTTP polling, track `time.monotonic()` at the loop level and bail explicitly. Prefer the SDK's `sessions.events.stream()` / `session.events.list()` over hand-rolled HTTP. See `shared/managed-agents-events.md` → Receiving Events.
65
66
  - **Messages queue** — you can send events while the session is `running` or `idle`; they're processed in order. No need to wait for a response before sending the next message.
66
- - **Cloud environments only** — `config.type: "cloud"` is the only supported environment type.
67
+ - **Environment `config.type` is `"cloud"` or `"self_hosted"`** — `cloud` runs the container on Anthropic's infrastructure; `self_hosted` moves tool execution to your own (see `shared/managed-agents-self-hosted-sandboxes.md`).
67
68
  - **Archive is permanent on every resource** — archiving an agent, environment, session, vault, credential, or memory store makes it read-only with no unarchive. For agents, environments, and memory stores specifically, archived resources cannot be referenced by new sessions (existing sessions continue). Do not call `.archive()` on a production agent, environment, or memory store as cleanup — **always confirm with the user before archiving**.