Agent Harness Aman untuk Claude Code dan Codex: Permission, Verifikasi, dan Rollback
Rancang Agent Harness praktis untuk Claude Code dan Codex dengan policy, plan, verification, dan recovery layer.
Agent yang kuat butuh pagar yang kuat
Saat baru memakai Claude Code atau Codex, kita sering merasa kuncinya hanya prompt yang bagus. Itu cukup untuk perubahan kecil. Tetapi ketika agent mulai menyentuh deploy, API SaaS, file lokal, publikasi artikel, atau pengiriman email, masalah utamanya bukan lagi prompt. Masalahnya adalah struktur eksekusi di sekeliling agent.
Di artikel ini, Agent Harness berarti struktur luar yang membuat AI agent bekerja dengan aman: aturan permission, rencana eksekusi, verifikasi, log, dan rollback.
Untuk memahami konsepnya terlebih dahulu, baca panduan harness engineering. Untuk risiko konkret, lihat contoh kegagalan keamanan Claude Code.
User request
|
v
Agent
|
v
[1] Policy layer Apa yang allow, ask, atau deny
[2] Plan layer Urutan langkah kerja
[3] Verification layer Cara membuktikan hasil berhasil
[4] Recovery layer Cara pulih saat gagal
|
v
Files / shell / SaaS APIs / deploy
Dokumentasi Claude Code membahas settings, permissions, hooks, dan MCP. Mulai dari Claude Code settings, Hooks reference, dan MCP.
Contoh: harness untuk publikasi artikel
“Publikasikan satu artikel” sebenarnya terdiri dari banyak langkah.
1. Baca analytics 7 hari terakhir
2. Pilih topik dekat cluster yang sedang naik
3. Cek artikel lama agar tidak duplikat
4. Tulis artikel sumber
5. Buat semua versi bahasa
6. Validasi frontmatter, slug, dan internal link
7. Build website
8. Cek URL publik
9. Commit dan push
Jika plan ini tidak eksplisit, agent bisa menyelesaikan bagian yang terlihat saja dan lupa terjemahan, build, atau cek produksi.
Integrasi SaaS: pisahkan read, generate, dan send
Misalnya agent mencari perusahaan dan membuat draft email outreach.
| Operasi | Otomatis | Alasan |
|---|---|---|
| Membaca halaman publik | Ya | Dampak rendah |
| Menyimpan CSV lokal | Ya | Bisa direview |
| Membuat halaman contoh | Ya | Bisa dicek sebelum publish |
| Membuat draft email | Ya | Belum terkirim |
| Mengirim email | Perlu approval | Berdampak ke orang nyata |
Inti Agent Harness adalah memisahkan batas ini. Membaca dan membuat draft boleh otomatis. Deploy, publish, dan send perlu approval.
Policy layer
Mulai dengan policy sederhana.
{
"allowCommands": [
"npm run build",
"npm run test",
"node scripts/content-trend-report.mjs"
],
"askCommands": [
"git push",
"wrangler pages deploy",
"node scripts/outreach-send-mails.mjs --send"
],
"denyCommands": [
"rm -rf",
"git reset --hard",
"curl * | sh",
"npm publish"
],
"protectedPaths": [
".env",
".env.local",
"claudecode-lab-sheets-f54fc47c68f0.json"
]
}
Di Claude Code, project settings bisa memuat aturan serupa.
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"allow": [
"Bash(npm run build)",
"Bash(npm run test *)",
"Bash(node scripts/content-trend-report.mjs *)"
],
"ask": [
"Bash(git push *)",
"Bash(wrangler pages deploy *)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git reset --hard *)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./claudecode-lab-sheets-f54fc47c68f0.json)"
]
}
}
Aturan konkret jauh lebih aman daripada hanya menulis “hati-hati dengan secret”.
Verification layer
Sukses harus bisa dibuktikan dengan command.
const url = process.argv[2];
const response = await fetch(url, { redirect: "follow" });
if (!response.ok) {
throw new Error(`Page returned ${response.status}: ${url}`);
}
const html = await response.text();
const checks = [
["title", /<title>.+<\/title>/i],
["description", /<meta name="description"/i],
["adsense", /ca-pub-2125588229998303/i],
["analytics", /G-3YR0LE68MJ/i]
];
for (const [name, pattern] of checks) {
if (!pattern.test(html)) throw new Error(`Missing ${name}`);
}
Untuk artikel berisi kode, gunakan Playwright untuk mengecek apakah pre, code, atau table melebar di tampilan mobile.
Recovery layer
Setiap run perlu log perubahan.
{
"runId": "2026-05-19-article-001",
"topic": "agent harness security",
"changedFiles": [
"site/src/content/blog/claude-code-codex-agent-harness-security.mdx"
],
"commands": [
"node scripts/content-trend-report.mjs --days 7",
"npm run build"
],
"status": "deployed"
}
Untuk Git, gunakan recovery yang spesifik.
git status --short
git diff -- site/src/content/blog/target-article.mdx
git revert <bad-commit>
Checklist implementasi: mulai dari titik keluar
Mistake pertama biasanya bukan prompt yang buruk. Masalah muncul ketika agent awalnya hanya membaca informasi, lalu tanpa batas yang jelas ikut melakukan aksi eksternal. Karena itu, tetapkan titik keluar setiap workflow sebelum menambah otomatisasi.
Untuk konten, titik keluar bukan “artikel sudah ditulis”. Titik keluar yang benar adalah: URL publik mengembalikan 200, tag Analytics dan AdSense masih ada, dan code block tidak melebar di mobile. Untuk outreach, titik keluar bukan “email sudah dikirim”. Titik keluar yang aman adalah: daftar perusahaan, halaman sampel, dan draft email siap ditinjau. Untuk security fix, titik keluar bukan “kode berubah”. Titik keluar yang baik adalah: diff, test, dan rollback plan terlihat jelas.
| use case | Otomatiskan dulu | Tetap minta approval |
|---|---|---|
| Content ops | topik, draft, terjemahan, internal link, build | deploy, git push, perubahan tag iklan |
| Integrasi SaaS | read-only lookup, CSV, ringkasan, draft | kirim, hapus, ubah billing |
| Security fix | patch proposal, test, catatan dampak | secrets, production, permission lebih luas |
Pitfall paling berbahaya adalah mencampur membaca dan mengeksekusi. Agent yang membaca issue, log, dan halaman web sangat membantu. Tetapi jika agent yang sama juga bisa mengirim email, menghapus data, atau deploy production, instruksi jahat dalam dokumen eksternal dapat berubah menjadi aksi nyata. OWASP membahas Prompt Injection dan Excessive Agency dalam Top 10 for LLM Applications, dan risk ini sangat relevan untuk coding agent.
Untuk Claude Code, mulai dari panduan resmi security dan permissions. Untuk Codex, panduan OpenAI tentang code generation membantu memahami posisi produknya. Di ClaudeCodeLab, lanjutkan dengan security failure cases dan dangerous prompts.
Template siap pakai ada di /products/. Jika perlu mendesain permission, CI, review, dan deployment flow untuk tim, /training/ adalah jalur konsultasi yang lebih tepat.
Ringkasan
Kualitas agent bukan hanya kualitas prompt. Dalam workflow nyata, kualitas datang dari harness.
- Policy: apa yang allow, ask, dan deny
- Plan: langkah yang jelas sebelum eksekusi
- Verification: bukti bahwa hasil berhasil
- Recovery: cara kembali saat gagal
Claude Code dan Codex berbeda, tetapi prinsipnya sama: berikan agent jalur kerja yang aman, bukan kebebasan tanpa batas.
PDF gratis: cheatsheet Claude Code
Masukkan email dan unduh satu halaman berisi command, kebiasaan review, dan workflow aman.
Kami menjaga datamu dan tidak mengirim spam.
Tentang penulis
Masa
Engineer yang berfokus pada workflow Claude Code praktis dan adopsi tim.
Artikel terkait
Permission receipt Claude Code: mencatat scope, bukti, dan rollback
Pola permission receipt untuk Claude Code: aksi yang diizinkan, batas approval, command verifikasi, rollback, dan cek CTA revenue.
Subagent Claude Code: panduan praktis untuk delegasi artikel dan kode
Panduan subagent Claude Code untuk membagi pekerjaan artikel dan kode: aturan delegasi, prompt, risiko, dan checklist.
Claude Agent SDK: masukkan Claude Code ke app dengan aman
Setup terbaru Claude Agent SDK, permission, MCP, contoh runnable, dan pitfall production.