AI
Claude Managed Agents vs OpenAI Agents API: Perbandingan
Oktober 202612 menit baca

Keduanya adalah agent harness hosted yang dibangun di atas agent, environment, session, dan events, dan keduanya bisa menjalankan tool di sandbox yang dikelola vendor atau self-hosted. Claude memperlakukan agent dan environment sebagai resource berversi yang bisa dipakai ulang serta menyediakan scheduled deployments berbasis cron. OpenAI membolehkan satu request mendefinisikan seluruh session, mendukung environment bertipe none, dan menjalankan Codex harness yang dikelola.
Tidak. Anthropic menyatakan Claude Managed Agents tidak memenuhi syarat Zero Data Retention maupun cakupan HIPAA BAA karena session menyimpan history, state sandbox, dan output di server. OpenAI menyatakan Agents API tidak mendukung Zero Data Retention dan sandbox self-hosted tidak membuatnya memenuhi syarat. Keduanya memungkinkan session dihapus setelah pekerjaan selesai.
Claude Managed Agents menagih token sesuai tarif model plus $0.08 per session-hour, yang dihitung hanya selama session running. OpenAI tidak mencantumkan biaya agent terpisah: token sesuai tarif model, tool dengan tarif standar, dan sandbox hosted dengan tarif container, yaitu $0.03, $0.12, dan $0.48 per session 20 menit untuk 1 GB, 4 GB, dan 16 GB.
Claude Managed Agents punya scheduled deployments yang memulai session dari ekspresi cron POSIX dalam timezone IANA, hingga 1.000 per organisasi. Setiap run diberi jitter hingga 15 persen, maksimal 9 menit. OpenAI Agents API tidak mendokumentasikan scheduler, jadi Anda memicu session dari cron atau queue sendiri lalu memantaunya lewat webhook.
Hanya sebagian. Sandbox self-hosted menjaga file, proses, dan network egress dari eksekusi tool tetap di infrastruktur Anda, yang membantu ketika agent harus menjangkau sistem privat. Agent loop tetap berjalan di harness vendor, sehingga prompt, perintah, dan hasil tool tetap sampai ke Anthropic atau OpenAI. Jika data tidak boleh keluar dari server Anda, jalankan library agent di proses Anda sendiri.

Ringkasan Utama
Claude Managed Agents dan OpenAI Agents API sama-sama agent harness hosted yang dibangun di atas empat objek yang sama: agent, environment, session dan events, dengan sandbox managed atau self-hosted. Keduanya tidak memenuhi syarat Zero Data Retention. Claude menambahkan penjadwalan cron dan menagih $0.08 per session-hour aktif; OpenAI menambahkan mode tanpa sandbox, residensi khusus AS, dan sandbox bertarif container.
Bayangkan sebuah tim yang menjalankan agent loop buatan sendiri untuk back office ERP di Jakarta. Sebuah worker Python memanggil model, menjalankan tool di dalam container Docker, memangkas history ketika terlalu panjang, dan melanjutkan dari checkpoint setiap kali VPS reboot. Setiap bagian itu adalah kode yang harus dirawat tim. Sepanjang 2026, Anthropic dan OpenAI sama-sama menawarkan untuk menjalankan loop itu bagi mereka, Anthropic lewat Claude Managed Agents pada April dan OpenAI lewat Agents API pada September, sehingga pertanyaannya berubah menjadi: perlukah worker itu dihapus?
Perbandingan Claude Managed Agents vs OpenAI Agents API ini ditulis tepat untuk keputusan tersebut. Isinya mencakup model objek yang sama, tabel fitur lengkap, satu tugas yang ditulis dengan kedua SDK, custom tool, sandbox, penjadwalan, kontrol data, dan biaya. Setiap klaim berasal dari dokumentasi resmi kedua vendor per 1 Oktober 2026. Kedua produk masih beta, jadi periksa halaman yang ditautkan sebelum mengambil keputusan.
Kedua produk ini berakhir dengan istilah yang hampir sama. Keduanya mengenal agent, environment, session, dan events yang mengalir antara aplikasi Anda dan agent yang sedang berjalan. Tabel berikut memetakannya satu per satu; perbedaannya ada di detail, bukan di konsep.
| Konsep | Claude Managed Agents | OpenAI Agents API |
|---|---|---|
| Agent | Resource berversi yang menyimpan model, system prompt, tool, MCP server, dan skill. Session merujuknya lewat ID atau mengunci satu versi. | Model, instructions, tool, dan MCP server. Bisa dikirim inline saat membuat session, atau disimpan sekali lalu dipakai lewat agent_id. |
| Environment | Dibuat terpisah dan wajib untuk setiap session: cloud sandbox yang dikelola Anthropic atau sandbox self-hosted. | Opsional dan dideklarasikan per session: openai_hosted, self_hosted, atau none untuk agent yang hanya memanggil tool. |
| Session | Instance agent yang berjalan di dalam environment, dengan filesystem dan history yang persisten. Dibuat dulu, lalu dimulai oleh user event atau initial_events. | Instance durable yang mengerjakan tugas. Request pembuatannya bisa langsung membawa input pertama dan men-stream turn pertama. |
| Events | Masuk: user.message, user.interrupt, user.tool_confirmation, user.custom_tool_result. Keluar: agent.message, agent.tool_use, session.status_idle. | Masuk: agent.session.input.message, input.cancel, input.tool_result. Keluar: hasil turn seperti agent.session.turn.completed. |
| Transport | Server-sent events, dengan seluruh event history disimpan di server dan bisa diambil kembali. | Server-sent events pada stream session, atau webhook bertanda tangan untuk perubahan state tanpa stream terbuka. |
Ada dua perbedaan yang terasa dalam praktik. Claude memperlakukan agent dan environment sebagai resource jangka panjang yang dibuat sekali lalu diberi versi, cocok untuk banyak session yang berbagi satu konfigurasi yang sudah direview. OpenAI membolehkan satu request membawa semuanya dan menambahkan environment bertipe none, cocok untuk agent yang hanya bicara dengan MCP server remote dan tidak pernah butuh shell.
Inilah tabel yang perlu ditunjukkan kepada siapa pun yang menyetujui arsitektur. Jika sebuah sel bertuliskan tidak didokumentasikan, artinya halaman vendor per Oktober 2026 tidak menyebut apa-apa, dan itu tidak sama dengan tidak ada.
| Dimensi | Claude Managed Agents | OpenAI Agents API |
|---|---|---|
| Rilis dan status | Public beta sejak 8 April 2026 | Public beta sejak 10 September 2026 |
| Penanda beta | anthropic-beta: managed-agents-2026-04-01 di setiap endpoint; SDK memasangnya otomatis | Header OpenAI-Beta: agents=v1; method SDK berada di bawah client.beta.agents |
| Harness | Agent harness milik Anthropic dengan prompt caching dan compaction bawaan | Codex harness yang dikelola OpenAI, dengan compaction, recovery, dan resume |
| Tool bawaan | Bash, operasi file (read, write, edit, glob, grep), web search, dan web fetch | Perintah sandbox dan edit file, web search, programmatic tool calling, serta computer use sejak 29 September 2026 |
| Tool milik Anda | Custom tool dengan input_schema; hasil dikirim balik sebagai user.custom_tool_result | Function tool dengan parameter JSON Schema; hasil dikirim balik sebagai agent.session.input.tool_result |
| MCP | MCP server di konfigurasi agent; MCP tunnel untuk server privat masih research preview terbatas | MCP server lewat transport HTTP, dipanggil langsung oleh harness |
| Opsi sandbox | Cloud sandbox yang dikelola Anthropic atau sandbox self-hosted; environment selalu wajib | Sandbox yang di-host OpenAI, sandbox self-hosted, atau tanpa environment sama sekali |
| Sandbox hosted | Sandbox aman dengan package terpasang dan akses jaringan; ukuran tidak didokumentasikan di halaman overview | Workspace Linux dalam tiga ukuran hingga 4 vCPU dan 16 GB; jaringan enabled, disabled, atau allowlist |
| Multi-agent | Koordinasi multi-agent masih research preview, tersedia atas permintaan | Subagent lewat multi_agent, dengan batas max_concurrent_subagents |
| Penjadwalan | Scheduled deployments: cron POSIX plus timezone IANA, hingga 1.000 per organisasi | Tidak ada scheduler yang didokumentasikan; picu session dari cron atau queue Anda sendiri |
| Retensi | History, state sandbox, dan output disimpan di server sampai session dihapus | State session disimpan lintas turn sampai session dihapus |
| ZDR dan HIPAA | Tidak memenuhi syarat Zero Data Retention maupun cakupan HIPAA BAA | Tidak ada Zero Data Retention, dan sandbox self-hosted tidak mengubahnya; BAA tidak dibahas di halaman overview |
| Residensi data | Inference bisa dikunci ke AS lewat inference_geo, dengan tarif token 1,1x | Hanya Amerika Serikat |
| Harga | Token sesuai tarif model plus $0.08 per session-hour selama running; tanpa biaya container-hour terpisah | Token sesuai tarif model, tool OpenAI dengan tarif standar, sandbox hosted dengan tarif container; tidak ada biaya agent terpisah |
Baca baris ZDR dan residensi sebelum baris fitur. Kedua vendor mengambil trade-off yang sama: harness hosted yang stateful menyimpan transkrip Anda di server mereka, sehingga tidak ada yang menawarkan Zero Data Retention untuk produk ini. Baris fiturnya cukup mirip, jadi kebanyakan tim akan memutuskan berdasarkan kontrol data, penjadwalan, dan keluarga model mana yang sudah lolos evaluasi mereka.
Cara tercepat merasakan perbedaannya adalah menulis satu pekerjaan dua kali. Blok di bawah meminta tiap platform merekonsiliasi export stok terhadap extract buku besar untuk satu gudang, dalam Python, hanya memakai method yang ditunjukkan dokumentasi masing-masing vendor. Nama model mengikuti yang dipakai dokumentasi tersebut pada Oktober 2026.
# --- Claude Managed Agents -------------------------------------------
from anthropic import Anthropic
claude = Anthropic() # the SDK adds the managed-agents-2026-04-01 beta header
# Agent and environment are separate, reusable resources. Create them once,
# keep the IDs in config, and reference them from every session.
agent = claude.beta.agents.create(
name="Stock reconciler",
model="claude-opus-5-5",
system="Reconcile the stock export against the GL extract. Report, never post.",
tools=[{"type": "agent_toolset_20260401"}], # bash, files, web search/fetch
)
environment = claude.beta.environments.create(
name="recon-env",
config={"type": "cloud",
"networking": {"type": "limited", "allow_package_managers": True}},
)
session = claude.beta.sessions.create(agent=agent.id, environment_id=environment.id)
# Open the stream BEFORE sending the event, so nothing is emitted unseen.
with claude.beta.sessions.events.stream(session.id) as stream:
claude.beta.sessions.events.send(session.id, events=[{
"type": "user.message",
"content": [{"type": "text", "text": "Run the reconciliation for JKT-01."}],
}])
for event in stream:
if event.type == "session.status_idle":
break # check event.stop_reason: end_turn OR requires_action
# --- OpenAI Agents API -----------------------------------------------
from openai import OpenAI
oai = OpenAI()
# Agent and environment can be inline; OpenAI provisions the sandbox.
# To reuse settings, save one with oai.beta.agents.create and pass agent_id.
with oai.beta.agents.sessions.create(
agent={"model": "gpt-6-astra",
"instructions": "Reconcile the stock export against the GL extract. "
"Report, never post."},
environment={"type": "openai_hosted", "network": {"access": "disabled"}},
input="Run the reconciliation for JKT-01.",
stream=True,
) as events:
for event in events:
# The turn outcome is the signal. agent.session.idle is not success.
if event.type in ("agent.session.turn.completed",
"agent.session.turn.failed",
"agent.session.turn.cancelled"):
breakClaude butuh tiga panggilan sebelum pekerjaan dimulai, karena agent, environment, dan session adalah resource terpisah. Sebagai gantinya, agent ID bisa dipakai ulang dan berversi, sehingga code review cukup menyetujui satu konfigurasi untuk semua session berikutnya. OpenAI cukup satu panggilan. Kondisi berhentinya juga berbeda: di Claude, session.status_idle dengan stop_reason end_turn berarti agent sudah tidak punya pekerjaan, sedangkan OpenAI melaporkan hasil turn secara eksplisit, completed, failed, atau cancelled, dan hasil itulah yang perlu ditunggu oleh job runner.
Tool bawaan berjalan di dalam sandbox, tetapi apa pun yang menyentuh ERP sebaiknya kode Anda sendiri: lookup stok read-only, draft jurnal, pencarian vendor. Kedua platform mengimplementasikannya dengan cara yang sama. Agent meminta sebuah panggilan, session berhenti sementara, aplikasi Anda menjalankan fungsinya lalu mengirim hasilnya kembali sebagai event.
# Claude: tool declared on the agent as {"type": "custom", "input_schema": ...}.
# The session emits agent.custom_tool_use, then idles with requires_action.
if event.type == "session.status_idle" and event.stop_reason.type == "requires_action":
for event_id in event.stop_reason.event_ids:
call = seen_tool_uses[event_id] # the agent.custom_tool_use event
claude.beta.sessions.events.send(session.id, events=[{
"type": "user.custom_tool_result",
"custom_tool_use_id": event_id,
"content": [{"type": "text", "text": run_erp_lookup(call.name, call.input)}],
}])
# OpenAI: tool declared as {"type": "function", "parameters": ...}.
# The stream emits agent.session.requires_action; the session holds the details.
pending = oai.beta.agents.sessions.retrieve(session_id).required_actions
for action in pending:
if action.type != "function_call":
continue # environment_connection, etc.
oai.beta.agents.sessions.events.create(session_id, events=[{
"type": "agent.session.input.tool_result",
"turn_id": action.turn_id,
"call_id": action.call_id,
"success": True,
"output": json.dumps(run_erp_lookup(action.name, action.arguments)),
}])
# Both: persist (session, call id) -> result BEFORE you send it. After a crash
# you resend the saved result instead of running a side effect twice.Bentuknya berbeda di satu hal yang berguna. Claude menaruh ID event yang memblokir langsung di event idle, jadi handler streaming sudah memegang semua yang dibutuhkan. Event requires_action dari OpenAI hanya memberi tahu bahwa ada yang perlu dicek, dan daftar required_actions pada session yang di-retrieve memberi tahu apa yang harus dilakukan. Desain kedua ini lebih mudah dipulihkan setelah restart, karena sumber kebenarannya cukup satu pembacaan API, bukan stream yang mungkin sudah terlewat.
Session yang berhenti sementara adalah session yang menunggu infrastruktur Anda. Jika worker yang menjawab tool call sedang mati, agent hanya akan menunggu, dan di Claude meteran runtime ikut berhenti selama session idle, jadi tagihan pun tidak akan memberi peringatan. Pantau jumlah tool call yang tertunda sebagai metrik, dan buat setiap tool yang menulis data bersifat idempotent dengan menyimpan hasilnya berdasarkan session dan call ID sebelum mengirimkannya kembali.
Kedua platform membolehkan sandbox berjalan di mesin Anda sendiri, dan keduanya tegas bahwa yang dipindahkan adalah eksekusi, bukan agent loop. Harness dan modelnya tetap di sisi vendor.
Konsekuensinya menyangkut apa yang bisa Anda janjikan ke klien. Sandbox self-hosted menjaga file yang dikerjakan agent, proses yang dijalankannya, dan network egress-nya tetap di sisi Anda, dan itu bernilai nyata ketika agent butuh database yang tidak bisa diakses publik. Namun percakapannya tidak tetap di sisi Anda: perintah dan hasil tool tetap dikirim ke harness vendor agar model bisa memutuskan langkah berikutnya. Jika syaratnya data tidak boleh keluar dari server Anda, tidak ada produk yang memenuhinya, dan jawaban yang jujur adalah library agent yang berjalan di proses Anda sendiri.
Agent back office biasanya dijadwalkan, bukan diajak mengobrol: rekonsiliasi tiap malam, ringkasan umur piutang setiap Senin, pengecekan akrual akhir bulan. Claude Managed Agents menjawabnya dengan scheduled deployments, yang memulai session dari ekspresi cron dalam timezone tertentu. Dokumentasi OpenAI Agents API membahas session, streaming, dan webhook tetapi tidak ada scheduler, sehingga pemicunya tetap di infrastruktur Anda sendiri.
# Claude scheduled deployment: the platform starts a session on a cron.
deployment = claude.beta.deployments.create(
name="Nightly stock reconciliation",
agent=agent.id,
environment_id=environment.id,
initial_events=[{ # at least one event is required
"type": "user.message",
"content": [{"type": "text",
"text": "Reconcile yesterday's movements for every warehouse."}],
}],
# Asia/Jakarta has no DST, so the skipped/doubled 2 AM trap never applies.
schedule={"type": "cron", "expression": "30 4 * * *", "timezone": "Asia/Jakarta"},
)
print(deployment.schedule.upcoming_runs_at) # confirm the fire times
# A trigger that fails creates a run record, not a session. Alert on these.
for run in claude.beta.deployment_runs.list(deployment_id=deployment.id, has_error=True):
print(run.created_at, run.error.type) # e.g. session_rate_limited_error
# OpenAI Agents API: no scheduler is documented, so the cron is yours,
# e.g. a worker that calls oai.beta.agents.sessions.create(...) at 04:30 WIB
# and listens for agent.session.idle / agent.session.failed webhooks.Ada tiga detail dari halaman scheduled deployments yang mengubah cara mengoperasikannya. Eksekusi diberi jitter hingga 15 persen dari interval, minimal 5 detik dan maksimal 9 menit, jadi job pukul 04.30 bisa mulai pukul 04.39. Trigger yang gagal, misalnya pembuatan session yang terkena rate limit, dicatat sebagai deployment run dengan tipe error dan tidak dicoba ulang sampai jadwal berikutnya. Lalu budget opsional disalin ke setiap session yang dimulai deployment, sehingga membatasi tiap run secara terpisah, bukan total seluruh run.
Kedua vendor menyampaikan hal yang nyaris sama. Claude Managed Agents stateful sejak desainnya, menyimpan history percakapan, state sandbox, dan output di server, sehingga tidak memenuhi syarat Zero Data Retention maupun cakupan HIPAA Business Associate Agreement. OpenAI Agents API menyimpan state session agar pekerjaan bisa berlanjut lintas turn, tidak mendukung Zero Data Retention, dan menyatakan bahwa memilih sandbox self-hosted tidak membuatnya memenuhi syarat. Keduanya memungkinkan session dihapus, dan Claude juga memungkinkan file yang diunggah dihapus secara terpisah.
Residensi adalah titik perbedaannya, itu pun tipis. OpenAI Agents API hanya mendukung residensi data di Amerika Serikat. Di Claude, konfigurasi model sebuah agent bisa mengunci inference_geo ke us, dengan tarif token 1,1 kali tarif standar untuk agent tersebut. Dokumentasi kedua produk tidak mencantumkan region Asia Tenggara.
Untuk klien di Indonesia, selesaikan pertanyaan soal data sebelum demo. Jika agent akan melihat data pribadi atau catatan keuangan yang terikat klausul residensi atau retensi, kedua harness hosted menyimpan transkrip di luar Indonesia sampai Anda menghapusnya. Rancang dengan sengaja: berikan ID dan agregat ke agent alih-alih baris mentah, simpan lookup sensitif di balik custom tool Anda sendiri, dan hapus session secara terjadwal setelah output-nya tersimpan.
Harga Claude lebih mudah diprediksi. Token ditagih sesuai tarif model, dan runtime session dikenai $0.08 per session-hour, diukur hingga milidetik hanya selama session running dan tidak pernah saat idle menunggu input atau konfirmasi tool. Biaya ini menggantikan penagihan container-hour, bukan menambahinya; contoh di halaman harganya sendiri, session Claude Opus 5 selama satu jam dengan 50.000 token input dan 15.000 token output, totalnya $0.705. OpenAI tidak mencantumkan biaya agent terpisah: token sesuai tarif model, tool dengan tarif standar, dan sandbox hosted dengan tarif container, yang di halaman harganya ditetapkan $0.03, $0.12, dan $0.48 per session 20 menit untuk 1 GB, 4 GB, dan 16 GB, ditagih per menit dengan minimum 5 menit. Setelah bentuk biayanya jelas, empat pertanyaan berikut menentukan pilihan.
Apa pun pilihannya, simpan tool Anda sebagai fungsi biasa di balik adapter tipis. Kontrak custom tool di atas cukup mirip sehingga memindahkan sebuah tool hanya butuh satu sore, sementara history session sama sekali tidak bisa dipindahkan antar kedua vendor.
Aturan yang layak dibawa: harness agent hosted adalah keputusan data terlebih dahulu, baru keputusan fitur. Claude Managed Agents dan OpenAI Agents API menghilangkan pekerjaan yang sama, yaitu loop, sandbox, compaction, dan recovery, dan keduanya menyimpan transkrip Anda sampai Anda menghapusnya. Jika itu bisa diterima, pilih berdasarkan kualitas model, penjadwalan, dan bentuk harga. Jika tidak, tetap jalankan loop di proses Anda sendiri.
Sumber