Amankan deployment Managed Agents Anda
Pengaturan yang membatasi apa yang dapat dijangkau dan dilakukan oleh agen Anda, diurutkan dari yang paling penting.
Panduan ini mencantumkan pengaturan yang membatasi apa yang dapat dijangkau dan dilakukan oleh agen di Claude Managed Agents, diurutkan dari yang paling penting. Setiap bagian menautkan ke halaman yang membahas pengaturan tersebut secara lengkap.
| Bagian | Pengaturan atau keputusan | Rekomendasi |
|---|---|---|
| Pilih tempat agen berjalan | Sandbox cloud atau self-hosted | Cloud, kecuali alat harus berjalan di infrastruktur yang Anda kendalikan |
| Batasi jaringan | networking.type pada environment | limited, hanya dengan host yang dibutuhkan agen |
| Simpan kredensial di vault | injection_location dan networking pada setiap kredensial variabel lingkungan | Hanya header permintaan, dan jaringan limited hanya dengan host yang menjadi tujuan kunci tersebut |
| Batasi web search dan web fetch | allowed_domains pada setiap alat web | Daftar izin (allowlist) pada setiap alat. Pada web_fetch, cantumkan hanya situs yang dibutuhkan agen. Pada web_search, cantumkan situs yang hasilnya Anda inginkan |
| Setujui tindakan berisiko | permission_policy pada setiap alat | auto pada bash, write, edit, web_fetch, dan alat MCP yang hanya membaca data. Gunakan always_ask pada alat jika Anda tidak dapat membatalkan perubahannya di luar sandbox, atau jika teks pengguna akhir yang diteruskan saja tidak boleh membuatnya berjalan |
| Berikan agen set alat terkecil | default_config.enabled pada toolset agen | false, lalu aktifkan alat yang dibutuhkan agen |
| Jauhkan input tidak tepercaya dari alat yang kuat | Alat dan kredensial mana yang dimiliki agen saat membaca input tidak tepercaya | Tidak ada agen pembaca input tidak tepercaya yang memiliki alat dengan always_allow yang menulis file, menjalankan perintah, atau mengubah catatan |
| Tetapkan batas dan cara untuk menghentikan | budget pada setiap sesi dan deployment | Batas yang disesuaikan dengan perkiraan biaya satu kali eksekusi |
| Secara opsional, minta peninjau offline membaca setiap transkrip | Job tinjauan offline yang Anda jalankan untuk membaca event setiap sesi | Opsional. Peninjauan terjadwal atas setiap sesi yang menjadi idle atau dihentikan |
| Pantau sesi dan tinjau retensi | Webhook dan penghapusan sesi | Peringatan saat sesi menjadi idle, mencapai anggarannya, atau dihentikan, serta pemeriksaan mengapa sesi menjadi idle. Simpan event yang ingin Anda pertahankan di log Anda sendiri, dan hapus sesi yang tidak lagi Anda perlukan |
Risiko keamanan dan batasan sandbox menjelaskan mengapa pengaturan ini penting dan apa yang tidak dilindunginya. Untuk meninjau dan memantau sesi, lihat Tinjau dan pantau sesi agen.
Pilih tempat agen berjalan
Tempat alat agen berjalan menentukan siapa yang mengamankan sandbox: Anthropic, dengan environment cloud, atau Anda, dengan sandbox self-hosted. Untuk memilih di antara keduanya dan mempelajari apa yang sampai ke Anthropic pada masing-masing opsi, lihat Memilih lingkungan agen.
Jika Anda menggunakan sandbox self-hosted, perhatikan empat poin berikut:
- Jaringan: Batasi jaringan berlaku untuk environment cloud. Untuk sandbox self-hosted, tetapkan batas yang setara pada lalu lintasnya di firewall Anda sendiri. Firewall Anda tidak membatasi server MCP yang dideklarasikan agen, jadi tinjau server tersebut, serta server apa pun yang ditetapkan aplikasi Anda untuk sebuah sesi.
- Alat web: Alat web berjalan di server Anthropic, sehingga firewall Anda tidak membatasinya. Batasi alat tersebut dengan daftar domainnya. Lihat Batasi web search dan web fetch.
- Kredensial: Kredensial variabel lingkungan belum didukung pada sandbox self-hosted.
- Isolasi dan hardening: Anda bertanggung jawab atas keduanya. Lihat Model keamanan.
Tidak ada opsi yang mengubah cakupan kepatuhan Managed Agents atau berapa lama riwayat sesi disimpan. Lihat Pantau sesi dan tinjau retensi.
Batasi jaringan
Tetapkan networking.type ke limited dan cantumkan hanya host yang dibutuhkan agen di allowed_hosts. Permintaan pembuatan environment yang tidak menyertakan networking mungkin mendapatkan unrestricted, jadi tetapkan networking di setiap permintaan pembuatan. Lihat Risiko jaringan tanpa batasan.
File, memory store, dan repositori GitHub yang Anda lampirkan tetap tersedia bagi agen terlepas dari allowed_hosts.
Contoh di halaman ini menggunakan agen dukungan. Agen ini membaca tiket pelanggan, mencari pesanan, membaca pusat bantuan Anda, dan menyusun draf balasan. Aplikasi Anda menjalankan pencarian pesanan, yang tidak memerlukan host, sehingga environment ini mengizinkan satu host, yaitu pusat bantuan, untuk web_fetch:
ant apply environment.yaml# yaml-language-server: $schema=https://platform.claude.com/schemas/ant/beta/environment.json
name: support-agent
config:
type: cloud
networking:
type: limited
allowed_hosts:
- help.example.comEnvironment limited memiliki tiga pengaturan jaringan:
| Pengaturan | Apa yang dibukanya bagi kode di sandbox | Rekomendasi |
|---|---|---|
allowed_hosts | Host yang Anda cantumkan, untuk permintaan apa pun | Hanya host yang dibutuhkan agen, termasuk host setiap server MCP yang Anda operasikan atau percayai |
allow_package_managers | Host package manager. Ini mencakup setiap repositori dan path di github.com, gitlab.com, dan bitbucket.org, tempat siapa pun dapat memublikasikan konten dan tempat kode di sandbox dapat mengunggah file | false, kecuali pengaturan packages pada environment mencantumkan paket, yang memerlukan true. Jika agen menginstal paket saat berjalan, cantumkan hanya host registry yang dibutuhkannya di allowed_hosts sebagai gantinya |
allow_mcp_servers | Tidak ada host. Managed Agents terhubung ke server MCP dari server Anthropic | false, dengan host setiap server MCP yang Anda operasikan atau percayai dicantumkan di allowed_hosts |
Pengaturan allow_package_managers dan allow_mcp_servers tidak menambahkan host untuk web search dan web fetch.
Biarkan allow_mcp_servers nonaktif, yang merupakan default, dan cantumkan host setiap server MCP yang Anda operasikan atau percayai di allowed_hosts. Setiap host yang Anda cantumkan juga terbuka bagi kode di sandbox. Dengan allow_mcp_servers nonaktif, pemeriksaan saat pembuatan sesi menolak permintaan jika host server MCP tidak tercantum. Lihat Menyediakan autentikasi saat pembuatan sesi. Pemeriksaan yang sama dijalankan saat pembaruan sesi mengubah mcp_servers.
Saat Anda memilih host untuk allowed_hosts, ikuti dua aturan berikut:
- Cantumkan hanya host yang Anda operasikan atau percayai.
- Hindari wildcard
*.dan domain shared-hosting tempat siapa pun dapat memublikasikan konten.
Jika agen tetap memiliki bash, tetapkan kebijakan izin alat bash seperti yang dijelaskan di Setujui tindakan berisiko.
Lihat Penyiapan environment cloud untuk setiap pengaturan jaringan.
Simpan kredensial di vault
Simpan setiap rahasia di vault. Untuk setiap kredensial variabel lingkungan, tetapkan lokasi injeksi hanya ke header permintaan dan cantumkan hanya host yang menjadi tujuan rahasia tersebut. Kode di sandbox melihat placeholder alih-alih rahasia. Managed Agents menukar placeholder dengan rahasia asli hanya dalam permintaan HTTPS keluar ke host yang diizinkan kredensial. Dengan demikian, rahasia tetap berada di luar jangkauan langsung model, kecuali jika suatu layanan mengirimkannya kembali, seperti endpoint yang menggemakan header permintaan. Jika networking kredensial adalah unrestricted, Managed Agents memasukkan rahasia asli ke dalam permintaan ke host mana pun yang dapat dijangkau sandbox menurut environment. Untuk menggunakan vault, teruskan ID-nya di vault_ids saat Anda membuat sesi atau deployment.
| Pengaturan | Tetapkan ke | Alasan | Apa yang tidak dilakukannya |
|---|---|---|---|
injection_location | {"header": true, "body": false}, setelah Anda memeriksa bahwa layanan membaca kunci dari header | Body permintaan sering dibangun dari konten yang dibaca agen, sehingga kunci di body lebih terekspos. Sebutkan kedua field: permintaan pembuatan yang tidak menyertakan objek ini mengaktifkan kedua lokasi, dan pembaruan hanya mengubah field yang Anda kirim | Kode tetap dapat menggunakan kunci di setiap host yang diizinkan kredensial. Layanan yang mengharapkan kunci di body menerima placeholder dan menolak permintaan |
networking pada kredensial | limited, dengan host persis yang menjadi tujuan kunci | Respons sampai ke sandbox tanpa disensor, jadi hindari wildcard, domain shared-hosting, dan host yang menggemakan header permintaan | Tidak membuka host. Environment juga harus mengizinkannya |
| Izin kunci, di layanan yang menerbitkan kunci | Hanya izin yang dibutuhkan agen | Agen dapat melakukan apa pun yang diizinkan kunci | Tidak berlaku |
| Token GitHub repositori yang di-mount | Token fine-grained dengan izin minimum | Kode di sandbox dapat melakukan fetch dari dan push ke repositori yang di-mount dengan token ini selama seluruh sesi. Berikan akses tulis hanya jika agen harus melakukan push | Tidak berlaku |
Agen dukungan tidak memerlukan kredensial vault, karena aplikasi Anda memegang kunci API untuk API pesanan Anda. Jika agen Anda memegang kredensial vault, lihat Menambahkan kredensial untuk permintaan dalam setiap bahasa.
Jauhkan kunci dari prompt sistem, definisi agen, dan pesan. Jangan berikan kunci API Claude kepada agen. Bahkan ketika kunci API Claude berada di vault, kode di sandbox dapat menggunakannya untuk memanggil Claude API secara langsung. Kode tersebut dapat melakukan apa pun yang diizinkan kunci itu, seperti memulai atau menghapus sesi, atau menggunakan web search dan web fetch. Pengaturan alat, persetujuan, dan anggaran agen tidak berlaku untuk panggilan tersebut. Dalam environment limited, kode dapat melakukan panggilan ini hanya jika allowed_hosts memungkinkan sandbox menjangkau api.anthropic.com.
Ambil token sendiri dan simpan di vault, karena token yang diambil oleh kode di sandbox dengan rahasia yang tersimpan akan kembali tanpa disensor.
Simpan vault untuk beban kerja dengan tingkat kepercayaan berbeda di workspace terpisah, karena kunci API apa pun yang memiliki akses ke suatu workspace dapat mereferensikan vault-nya. Gunakan kunci API yang cakupannya terbatas pada satu workspace.
Lihat Autentikasi dengan vault untuk kredensial MCP dan rotasi.
Batasi web search dan web fetch
Tetapkan allowed_domains pada web_fetch ke situs yang dibutuhkan agen. URL apa pun yang diambil agen dapat membawa data ke situs yang ditujunya, sehingga daftar ini merupakan kontrol keamanan. Pada web_search, tetapkan allowed_domains ke situs yang hasilnya Anda inginkan, sehingga hasil hanya berasal dari situs yang Anda percayai keakuratannya. Daftar ini tidak mencegah kueri pencarian sampai ke penyedia pencarian. Hasil pencarian menyertakan teks dari halaman, sehingga daftar ini juga membatasi teks dari situs mana yang sampai ke agen. Tetapkan allowed_domains pada kedua alat untuk setiap jenis environment.
Daftar blocked_domains memblokir host yang Anda cantumkan beserta subdomainnya, dan tidak ada host lain. Konten yang sama masih dapat sampai ke agen dari arsip web, cache, mirror, atau domain terkait yang tidak Anda cantumkan. Jangan mengandalkan blocked_domains untuk keamanan. Gunakan allowed_domains dan sebutkan host yang Anda percayai.
Dalam environment limited, daftar allowed_hosts dari Batasi jaringan juga membatasi alat web. Environment unrestricted atau sandbox self-hosted tidak membatasi alat web.
Dalam environment limited | Hasil |
|---|---|
Entri allowed_domains pada alat web yang diaktifkan berada di luar allowed_hosts | Pembuatan sesi gagal dengan error 400, begitu pula pembaruan sesi yang menambahkan entri tersebut. Sesi yang dimulai oleh deployment, sesuai jadwalnya atau melalui eksekusi manual, tetap dibuat. Alat kemudian tidak mengembalikan apa pun dari host di luar allowed_hosts |
| Alat web tidak memiliki daftarnya sendiri | Alat mengembalikan halaman dan hasil hanya dari host di allowed_hosts. Tetapkan juga allowed_domains pada alat tersebut |
allowed_hosts tidak memiliki entri | Tidak ada alat web yang mengembalikan halaman atau hasil pencarian |
Anda menambahkan host ke allowed_hosts untuk alat web | Host tersebut juga terbuka bagi kode di sandbox |
Kedua daftar mencocokkan host secara berbeda:
| Daftar | Entri | Cocok dengan | Tidak cocok dengan |
|---|---|---|---|
allowed_hosts (environment) | example.com | example.com | www.example.com |
allowed_hosts (environment) | *.example.com | Setiap subdomain | example.com |
allowed_domains (alat web) | example.com | example.com dan setiap subdomain | Domain lain |
Jika agen membutuhkan sebuah situs beserta semua subdomainnya, cantumkan example.com dan *.example.com di allowed_hosts, dan jika tidak, cantumkan host yang persis. Jika sebuah alat mencantumkan example.com dan allowed_hosts hanya mencantumkan *.example.com, sesi tetap dibuat. Pemeriksaan saat pembuatan sesi menganggap example.com berada dalam *.example.com, tetapi alat tidak mengembalikan apa pun dari example.com itu sendiri. Lihat Menetapkan daftar domain pada agen untuk cara kedua daftar melakukan pencocokan.
Alat web_fetch juga hanya membuka URL yang sudah muncul dalam sesi:
| Tempat URL muncul | web_fetch dapat membukanya |
|---|---|
| Teks pesan pengguna, termasuk teks pengguna akhir yang Anda teruskan | Ya |
Deskripsi event user.define_outcome | Ya |
| Alamat hasil web search | Ya |
Teks halaman yang dikembalikan web_fetch sebelumnya (bukan PDF), tempat URL lengkap ditampilkan | Ya |
| Teks hasil alat kustom, ketika Claude memanggil alat tersebut secara langsung | Ya, kecuali hasilnya ditandai is_error: true |
| Prompt sistem | Tidak |
Konfigurasi agen, termasuk entri allowed_domains | Tidak |
| Output Claude sendiri | Tidak |
Output bash dan alat sandbox lainnya | Tidak |
| Hasil alat MCP | Tidak |
| File yang dilampirkan ke pesan pengguna | Tidak |
Dalam sesi multiagen, web_fetch membuka URL dari agen lain hanya jika URL tersebut sampai ke agen itu melalui sumber yang ditandai Ya. Hasil alat kustom dari panggilan langsung dihitung sebagai sumber yang ditandai Ya. Ini berlaku bahkan jika Claude yang menulis teksnya, misalnya ketika alat mengulang inputnya. URL dapat dihitung bahkan ketika ditulis tanpa https://, seperti example.com/docs. Alat web_fetch tidak selalu dapat membuka tautan yang menampilkan kata-kata alih-alih URL-nya, seperti "Hubungi dukungan." Jika agen harus mengambil URL yang belum muncul dalam sesi, kirimkan URL tersebut dalam pesan pengguna.
Aturan ini mengurangi kemungkinan teks yang diinjeksi membangun URL yang membawa data pribadi. Teks pengguna akhir, hasil pencarian, halaman yang diambil, dan hasil alat kustom masih dapat menambahkan URL, jadi tetap tetapkan allowed_domains. Messages API menerapkan aturan serupa dengan daftar sumber yang berbeda. Lihat Validasi URL.
Daftar domain pada web_fetch tidak membatasi alat bash. Batasi jaringan juga. Lihat Aturan daftar domain.
Setujui tindakan berisiko
Tetapkan auto pada bash, write, edit, dan web_fetch, serta pada alat MCP yang hanya membaca data. Gunakan always_ask sebagai gantinya pada alat jika Anda tidak dapat membatalkan perubahannya di luar sandbox. Gunakan juga pada alat yang tidak boleh berjalan hanya karena teks pengguna akhir yang Anda teruskan memintanya. Kebijakan izin menentukan apakah panggilan alat berjalan, menunggu persetujuan Anda, atau dievaluasi oleh server.
| Alat | Kebijakan yang direkomendasikan | Alasan |
|---|---|---|
read, glob, grep | always_allow | Alat ini membaca file di sandbox dan tidak mengubah apa pun |
bash, write, edit | auto. Gunakan always_ask pada alat jika Anda tidak dapat membatalkan perubahannya di luar sandbox. Gunakan always_ask pada bash jika Anda meneruskan teks pengguna akhir | Default toolset agen adalah always_allow, yang menjalankan setiap panggilan tanpa persetujuan |
web_fetch | auto | URL yang diambil agen dapat membawa data ke situs yang ditujunya |
web_search | always_ask jika agen menangani data yang tidak ingin Anda kirim dalam kueri pencarian. Jika tidak, always_allow | allowed_domains membatasi situs asal hasil, bukan isi kueri |
| Alat MCP yang hanya membaca data | auto, ditetapkan untuk setiap alat di configs toolset | Default toolset tetap always_ask, sehingga alat yang ditambahkan server MCP kemudian tetap menunggu persetujuan |
| Alat MCP yang mengubah data | always_ask | Ini adalah default toolset MCP. Pertahankan |
| Alat kustom | Kode Anda yang memutuskan apakah setiap panggilan berjalan | Kebijakan izin tidak berlaku |
Toolset di Berikan agen set alat terkecil menerapkan kebijakan ini.
Kebijakan auto memungkinkan server menjalankan panggilan, menolaknya, atau menjeda untuk persetujuan. Seseorang tidak dapat menyetujui setiap panggilan dalam eksekusi yang panjang, sehingga server memeriksa setiap panggilan sebagai gantinya. Pasangkan auto dengan jaringan terbatas, kunci dengan izin sempit, anggaran, dan peringatan pada sesi idle. auto bukan titik pemeriksaan manusia, jadi jika seseorang harus meninjau panggilan suatu alat sebelum berjalan, konfigurasikan always_ask pada alat tersebut.
auto memperlakukan teks dalam event user.message dan deskripsi dalam event user.define_outcome sebagai instruksi Anda, termasuk teks pengguna akhir yang Anda teruskan.
Sesi yang dijeda menunggu tanpa batas waktu, sehingga sesi tanpa pengawasan memerlukan klien yang menjawab panggilan yang dijeda atau menginterupsi sesi.
Tinjau setiap panggilan yang dijeda sebelum Anda mengizinkannya. Klien yang mengizinkan setiap panggilan tanpa menunjukkannya kepada seseorang sama dengan always_allow. Lihat Merespons permintaan konfirmasi dan Melihat bagaimana setiap panggilan dievaluasi.
Berikan agen set alat terkecil
Tetapkan default_config.enabled ke false dan aktifkan hanya alat yang dibutuhkan agen. Toolset agen mengaktifkan kedelapan alat bawaan secara default.
| Alat | Fungsinya |
|---|---|
bash | Menjalankan perintah apa pun, termasuk permintaan ke host yang diizinkan |
write, edit | Mengubah file di sandbox |
read, glob, grep | Membaca file di sandbox |
web_fetch, web_search | Mengembalikan halaman dan hasil pencarian dari web, melalui server Anthropic |
Agen dukungan membutuhkan tiga alat bawaan: read dan write untuk drafnya, dan web_fetch untuk pusat bantuan. Agen ini mencari pesanan melalui alat kustom, lookup_order, yang dijalankan aplikasi Anda. Aplikasi Anda memegang kunci API untuk API pesanan Anda, sehingga agen tidak memerlukan bash maupun kredensial.
Contoh berikut membatasi web_fetch ke help.example.com dengan allowed_domains. Contoh ini menetapkan auto pada write dan web_fetch, seperti yang direkomendasikan di Setujui tindakan berisiko. Jika tiket pelanggan mendorong agen menggunakan alat ini, agen hanya dapat mengubah file di sandbox atau membuka halaman pusat bantuan. Itulah sebabnya kedua alat tidak memerlukan always_ask. Contoh ini juga menetapkan always_ask di default_config, sehingga alat yang Anda aktifkan kemudian tanpa kebijakannya sendiri menggunakan always_ask:
ant apply agent.md---
name: Support Agent
model: claude-opus-5-5
tools:
- type: agent_toolset_20260401
default_config:
enabled: false
permission_policy:
type: always_ask
configs:
- name: read
enabled: true
permission_policy:
type: always_allow
- name: write
enabled: true
permission_policy:
type: auto
- name: web_fetch
enabled: true
allowed_domains: [help.example.com]
permission_policy:
type: auto
- type: custom
name: lookup_order
description: Look up one order by its ID. Returns the status, the items, and the delivery date.
input_schema:
type: object
properties:
order_id:
type: string
description: The order ID from the ticket
required:
- order_id
---Pembaruan agen menggantikan seluruh array tools, jadi kirimkan setiap entri yang ingin Anda pertahankan.
Pembaruan agen hanya menjangkau sesi baru, jadi periksa juga deployment, agen yang mencantumkan agen ini, dan sesi yang sudah ada:
- Deployment menyematkan versi agen, jadi arahkan setiap deployment ke versi yang baru.
- Agen yang mencantumkan agen ini di
subagents.predefined_agentsatauworkflows.predefined_agentsmempertahankan versi yang disematkannya, jadi perbarui agen tersebut juga. - Untuk memperketat sesi yang sudah ada, perbarui alat sesi tersebut. Sesi harus dalam status
idle, dan pembaruan menggantikan seluruh arraytools. Dalam sesi multiagen, daftarallowed_domainsdanblocked_domainsbaru pada alat web agen yang dijalankan sesi juga berlaku untuk setiap agen lainnya. Daftar tersebut berlaku mulai giliran berikutnya dari setiap agen. Alat yang diaktifkan dan kebijakan izin agen-agen tersebut tidak berubah. Untuk mengubahnya, perbarui setiap agen, lalu mulai sesi baru.
Batasi juga server MCP dan alat kustom sesuai kebutuhan agen:
- Server MCP: Toolset MCP mengaktifkan setiap alat yang diekspos server secara default. Tetapkan
default_config.enabledkefalsedan aktifkan alat yang disebutkan namanya, sehingga alat yang ditambahkan server kemudian tetap nonaktif. Hapus server yang tidak digunakan agen. Lihat Konektor MCP. - Alat kustom: Aplikasi Anda yang menjalankannya, dan kebijakan izin tidak berlaku. Validasi input setiap panggilan di aplikasi Anda dan batasi apa yang dapat disentuh alat tersebut.
Jauhkan input tidak tepercaya dari alat yang kuat
Periksa alat dan kredensial mana yang dimiliki agen setiap kali agen membaca input tidak tepercaya, yaitu teks yang dapat ditulis oleh seseorang di luar tim Anda. Bagian ini menggunakan dua istilah:
- Input tidak tepercaya: Halaman web, hasil pencarian, tiket dukungan, email, file repositori, unggahan, hasil server MCP, dan pesan pengguna akhir yang Anda teruskan.
- Alat yang kuat:
bash,write,edit,web_fetch,web_search, alat MCP dan alat kustom yang menulis atau mengirim data, serta alat apa pun yang menggunakan kredensial.
Teks dalam input tidak tepercaya dapat memerintahkan agen untuk menggunakan alat kuat yang dimilikinya. Agen dukungan membaca tiket, sehingga agen ini menjangkau API pesanan Anda hanya melalui alat kustom lookup_order. Aplikasi Anda memeriksa bahwa pesanan tersebut milik pengirim tiket.
| Input yang dibaca agen | Kemampuan yang juga dimilikinya | Lakukan ini |
|---|---|---|
| Tiket, email, atau unggahan | bash dengan kredensial | Ganti bash dengan alat kustom yang melakukan satu hal. Jika agen harus tetap memiliki bash, setujui setiap panggilan dengan always_ask |
| Halaman web atau hasil pencarian | Menulis file atau mengubah catatan | Nonaktifkan alat web, atau batasi ke situs yang Anda operasikan atau percayai |
| Hasil MCP atau file repositori | Alat MCP yang menulis | Pertahankan toolset MCP pada always_ask, dan aktifkan hanya alat yang dibutuhkan agen |
| Repositori GitHub yang di-mount | Alat apa pun | Mount hanya repositori yang Anda percayai. Agen dengan read memuat skill dari direktori .claude/skills repositori sebagai instruksi agen, tanpa langkah peninjauan. Lihat Memuat skill dari repositori GitHub |
| Input tidak tepercaya apa pun | Menulis ke memory store | Lampirkan store sebagai read_only kecuali agen harus menulis. Default-nya adalah read_write, dan sesi berikutnya membaca teks yang disimpan sebagai memori tepercaya |
Dalam environment cloud, membaca file dengan read juga dapat memuat file CLAUDE.md dan AGENTS.md sebagai instruksi. File tersebut dimuat dari direktori file dan direktori induknya, hingga direktori kerja sandbox. File yang direferensikannya dengan @ dan sebuah path, seperti @docs/setup.md, juga dimuat, hingga kedalaman lima referensi. Referensi dapat menunjuk ke mana saja di sandbox, misalnya @/etc/hosts. Tidak ada pengaturan yang menonaktifkan ini selain menonaktifkan read, jadi perlakukan repositori, paket, atau arsip yang dapat ditulis oleh seseorang di luar tim Anda sebagai input tidak tepercaya.
Ketika agen harus membaca input tidak tepercaya sekaligus bertindak, panduan ini merekomendasikan salah satu dari tiga desain:
- Pisahkan membaca dari bertindak. Dalam satu sesi multiagen, agen utama memberikan tugas kepada fetcher, yang membaca web, dan writer, yang mengubah file atau catatan.
- Berikan agen satu alat kustom yang sempit. Aplikasi Anda menjalankan alat tersebut, memeriksa inputnya, dan memegang kredensial. Agen dukungan menggunakan desain ini, bukan pemisahan. Lihat Menjawab panggilan alat yang menjeda sesi.
- Libatkan seseorang dalam prosesnya. Gunakan
always_askpada alat yang kuat sehingga seseorang menyetujui setiap panggilan.
Pemisahan menggunakan tiga agen:
| Agen | Membaca | Memegang | Meneruskan |
|---|---|---|---|
| Utama (agen yang dijalankan sesi) | Pesan Anda, dan apa yang dikirim kembali oleh agen lain | Tidak ada alat bawaan. Daftar subagents.predefined_agents-nya menyebutkan fetcher dan writer | Tugas untuk setiap agen |
| Fetcher | Halaman web dan hasil pencarian | Hanya web_fetch dan web_search, masing-masing dengan allowed_domains | Hasil singkat, dalam format yang Anda minta di prompt sistemnya |
| Writer | Tugas dari agen utama | Alat yang menulis file, menjalankan perintah, atau mengubah catatan, pada auto atau always_ask. Tanpa alat web | Hasilnya |
Hasil fetcher dibangun dari halaman tidak tepercaya, dan agen utama dapat meneruskan teksnya ke writer. Pertahankan auto atau always_ask pada alat writer. Fetcher masih dapat mengirim sebagian dari apa yang dibacanya ke situs dalam daftar web_fetch-nya, dan ke penyedia pencarian dalam kuerinya.
Agen dalam satu sesi multiagen berbagi sandbox, file-nya, dan kredensial vault, sehingga pemisahan ini hanya memisahkan alat dan percakapan mereka. Untuk pemisahan yang lebih kuat, gunakan dua sesi dengan environment dan vault terpisah. Minta aplikasi Anda hanya meneruskan field tetap, seperti ID pesanan, di antara kedua sesi.
Tetapkan batas dan cara untuk menghentikan
Tetapkan anggaran saat Anda membuat setiap sesi, dan tentukan sebelumnya bagaimana Anda menghentikan agen.
| Kontrol | Fungsinya |
|---|---|
| Anggaran sesi | Batas pengeluaran berdasarkan harga daftar publik. Saat mencapai batas, sesi dan setiap thread dijeda. Permintaan yang sedang berlangsung dapat selesai dan panggilan alatnya tetap berjalan, sehingga pengeluaran dapat melewati batas. Lihat Ketika sesi mencapai anggarannya |
| Anggaran deployment | Batas yang sama, diterapkan pada setiap sesi yang dimulai deployment |
Event user.interrupt | Menghentikan respons model segera. Panggilan alat yang sedang berjalan dapat selesai terlebih dahulu. Sesi menjadi idle, kecuali eksekusi workflow membuatnya tetap running, dan dilanjutkan pada pesan Anda berikutnya. Interupsi tidak mengakhiri eksekusi workflow |
| Arsipkan atau hapus sesi | Pengarsipan menyimpan riwayat dan memblokir event baru. Penghapusan menghapus catatan, event, dan sandbox |
| Jeda atau arsipkan deployment | Penjedaan menghentikan eksekusi terjadwal baru tetapi tetap mengizinkan eksekusi manual. Pengarsipan mengakhiri jadwal secara permanen. Sesi yang sudah berjalan tetap berjalan |
| Arsipkan atau hapus vault atau kredensial | Menghapus rahasia dari sesi yang sedang berjalan tanpa restart. Perhitungkan adanya penundaan. Sesi tetap berjalan, jadi interupsi juga sesi tersebut. Token yang sudah diambil agen dengan rahasia tersebut tetap berada di sandbox |
Untuk menghentikan agen yang sedang berjalan, ikuti langkah-langkah berikut:
- Kirim
user.interruptsaja. - Untuk agen terjadwal, jeda juga deployment agar tidak ada eksekusi terjadwal baru yang dimulai. Untuk mengakhiri jadwal secara permanen, arsipkan deployment.
- Jika sebuah kunci mungkin terekspos, rotasikan kunci tersebut di layanan yang menerbitkannya.
- Jika agen memiliki eksekusi workflow yang terbuka, kirim juga
user.messageyang memintanya menghentikan eksekusi tersebut, karena interupsi tidak mengakhiri eksekusi. Lihat Menginterupsi sesi dengan eksekusi yang terbuka untuk panggilan alat yang perlu dibatalkan terlebih dahulu. - Tunggu hingga sesi menjadi
idle. Sesi yang sedang berjalan tidak dapat diarsipkan atau dihapus. - Arsipkan sesi untuk menyimpan riwayatnya. Hapus sesi saat Anda tidak lagi memerlukan riwayatnya.
Interupsi tidak membatalkan apa yang sudah dilakukan atau dikirim agen. Mengarsipkan agen tidak menghentikan sesinya yang sedang berjalan.
max_list_cost.amount pada anggaran adalah bilangan bulat dalam sen AS yang ditulis sebagai string, sehingga "125" berarti $1,25. Lihat Menetapkan anggaran saat pembuatan sesi.
Anda tidak dapat menambahkan anggaran ke sesi yang dibuat tanpa anggaran. Untuk mengubah atau menghapus batas, lihat Melanjutkan sesi yang mencapai anggarannya. Setelah Anda menghapus batas sesi, Anda tidak dapat menetapkan batas baru.
Anggaran membatasi pengeluaran, tetapi tidak membatasi apa yang dilakukan agen sebelum mencapai batas. Untuk memisahkan beban kerja dengan tingkat kepercayaan berbeda, gunakan workspace terpisah. Berikan setiap beban kerja kunci API yang cakupannya terbatas pada satu workspace, karena kunci yang dapat menjangkau beberapa workspace dapat bertindak di workspace mana pun di antaranya.
Lihat Anggaran sesi, Operasi sesi, dan Deployment terjadwal.
Langkah selanjutnya
Mode jaringan, host yang diizinkan, dan package manager.
Kebijakan persetujuan dan permintaan konfirmasi.
Jenis kredensial, lokasi injeksi, dan rotasi.
Batas, melanjutkan pada anggaran, dan anggaran pada deployment.
Was this page helpful?