Lewati ke konten
Analisis
Inside

Inside the Harness: Turn-Scoped Permissions Menjadi Primitive Agent Runtime

OpenAI Codex sekarang memperlakukan permissions sebagai sesuatu yang terikat pada satu agent turn, bukan machine atau user. Apa itu turn-scoped permissions, threat model yang dijawab, bagaimana runtimes menerapkannya, dan mengapa snapshot semantics lebih penting daripada settings UI.

Oleh Adam Maguire WilsonBaca 6 mnt
Di halaman ini

Ada issue di repository OpenAI Codex, filed pertengahan Juli, yang mengatakan lebih banyak tentang arah agent runtimes dibanding kebanyakan launch posts. Reporter melihat jika Anda mengubah permission mode Codex saat turn berjalan, running turn mengabaikannya. Ia tetap memakai permissions saat mulai, dan setting baru baru berlaku next turn. Naikkan access mid-turn dan agent tetap blocked. Turunkan mid-turn dan, lebih buruk, UI bilang restricted sementara agent mempertahankan powers awal beberapa menit lagi.

Behaviour itu bukan bug dalam arti sederhana. Itu tepi terlihat dari design decision yang perlahan jadi standar: permissions scoped ke turn, snapshotted ketika turn mulai, dan menjadi property unit of work, bukan user, machine, session. Piece ini menjelaskan primitive, threat model, dan bagaimana Codex sebagai reference implementation mengikatnya.

Poin utama - Turn-scoped permissions berarti runtime snapshot approval policy, sandbox policy, permission profile saat turn dimulai, dan every tool call berjalan terhadap snapshot. - Threat model bukan malicious user, tetapi capable agent mengikuti hostile instructions, prompt injection, atau drift off-task dengan credentials Anda. - Codex memakai tiga dial: approval policy, apakah bertanya; sandbox mode, apa yang commands sentuh; permission profiles, fine-grained filesystem/network rules, enforced OS. - Enforcement di bawah model: Seatbelt macOS, bubblewrap+seccomp Linux, native sandbox Windows. Jika policy tak bisa enforce, Codex menolak command. - Frontier belum selesai: mid-turn mutation. Snapshot immutable sepanjang turn, aman tetapi kadang frustrating.

Apa yang terjadi

Akhir Juli sampai awal Agustus, permission surface Codex berkembang dari dua coarse settings menjadi policy engine. Model lama: sandbox_mode (read-only, workspace-write, danger-full-access) dan approval_policy (untrusted, on-request, never) di config.toml. Model baru menambah permission profiles, beta, named composable policies yang menggabungkan filesystem rules (read, write, deny per path, deny wins) dan network rules via local proxy. Built-ins: :read-only, :workspace, :danger-full-access, yang Anda extend.

Interaction juga turn-native. /permissions mengganti modes dalam session. Granular approval policy bisa tetap interactive untuk sandbox escalations/MCP elicitations, auto-reject kategori lain termasuk request_permissions, agent meminta akses tambahan. Approvals dapat diarahkan ke automatic reviewer agent untuk screen exfiltration, credential probing, destructive actions sebelum human melihat, menurut OpenAI approvals/security docs.

Ini bukan satu announcement. Runtime sedang membangun permission layer seperti OS membangun user accounts: setelah kontak dengan realitas.

Codex berkembang dari sandbox mode/approval policy ke named permission profiles dengan filesystem rules dan proxied domain rules, mid-session switching, granular approvals, optional auto-review agent, menurut permissions dan security docs.

Apa arti "turn-scoped"

Set yang boleh agent lakukan terikat lifetime satu turn, captured saat mulai, releasable saat selesai. Bukan user yang mungkin pergi, machine dengan banyak risk profile, bahkan bukan session yang pagi review dan sore install dependencies.

Issue awal membuktikan snapshot real. Running turn "retains a permission or sandbox snapshot created when the turn starts". Proposed fix: propagate approval/sandbox/profile baru atau pause-resume internal agar turn restart dengan permissions fresh tanpa re-prompt. Acceptance criteria adalah spec turn-scoped: lower permissions harus block violating operations baru, raising unblock agent, resumed/delegated/compacted turns preserve updated context.

Mengapa snapshot? Mutable global permissions lebih buruk. Content yang bisa memengaruhi state punya lever ke next action. Immutable-per-turn membuat decision sekali pada clear human/policy intent, agent tidak bisa negotiate mid-flight. Turn jadi smallest unit of trust. "Review this diff" dan "push to main" tidak boleh share permission context meski same session.

Codex mengikat permissions ke turn-start snapshot: issue July 2026 mendokumentasikan mid-turn changes tidak memengaruhi running turn dan mengusulkan propagation context baru.

Threat model

Ada tiga threats.

Prompt injection. Agent membaca untrusted repositories, web, tickets, tool output. Default web search cached untuk mengurangi live injection exposure; network access dapat membiarkan injected agent fetch/follow instructions. Network-off sandbox membatasi blast radius turn.

Drift/over-reach. Legitimate capable agent tetap bisa install, fetch dependency, cleanup. OS sandbox, Seatbelt, bubblewrap+seccomp, Windows sandbox, bukan judgement model. Jika tak enforce, command refused. Fail closed.

Credential exposure. Full access container + malicious project dapat exfiltrate credentials. Karena itu "**/*.env" = "deny", .git, .codex, .agents read-only, network proxy block local/private. Same pattern agentic AI architecture: harness should hold secrets.

Threat model Codex berpusat pada prompt injection, agent drift, credential exposure dengan network-off, OS sandbox, deny globs, read-only sensitive paths dan local-network blocking, menurut security docs.

Bagaimana implementasi bekerja

Ada tiga implementation details yang layak dicuri untuk cara Anda memikirkan own runtime.

Deny > write > read pada specificity sama. Broad grant lalu exceptions. More specific override, denied child tetap denied. Bisa reopen narrow subtree. Good least-privilege precedence.

Network access dan filtering berbeda. network.enabled = true memberi connectivity; features.network_proxy = true enforce domain policy. Tanpa proxy governance palsu. Deny wins, localhost blocked by default.

Old/new tidak compose. sandbox_mode loaded membuat profiles ignored. Admin bisa force allowed_permission_profiles. Dua systems yang "both apply" menghasilkan ambiguity. Pick one, verify /permissions dan /status.

Di luar CLI: snapshot per task, credentials di tool layer, enforce below model, expire end. Vendor vs own harness = build versus buy, self-host = trade-offs.

Codex profiles memakai deny-over-write-over-read, memisahkan network enablement/filtering dan menolak compose legacy sandbox settings, menurut permissions docs.

Apa yang dilakukan sekarang

  1. Hari ini: /permissions, /status. Jika config masih sandbox_mode, profiles off. Pilih system.

  2. Minggu ini: custom :workspace, deny **/*.env, only API domains, network_proxy on. Test codex debug. Third-party repo gunakan :read-only.

  3. Bulan ini: turn sebagai permission unit, snapshot start, expire end, secrets outside model, fail closed. Tentukan mid-turn mutation semantics agar UI jujur.

FAQ

Apa turn-scoped permissions?

Runtime snapshot approval, sandbox dan filesystem/network rules pada turn start dan apply ke every tool call. Permission melekat pada unit of work dan expire pada end.

Bedanya dengan restricted OS user?

OS user static machine-wide. Turn scoping memberi different policies per task dalam same session dan natural expiry.

Prompt injection bisa mengubah permissions?

Tidak within active turn karena snapshot. Risiko next turn dan already allowed surfaces tetap ada.

Permission profiles stabil?

Beta, tidak compose legacy settings. Direction of travel. Verify version dan /status.

Kesimpulan

Agent permissions bergerak dari root-or-nothing menuju least-privilege auditable boundaries, dengan unit baru: turn. Codex adalah reference yang paling jelas, dan immutable mid-turn snapshot menunjukkan trade-off antara safety dan dynamic UI. Serious runtimes akan mengadopsi primitive semacam ini. Yang salah snapshot semantics akan belajar di production.

Jika Anda merancang permission layer agents dan ingin second pair of eyes, saya melakukan pekerjaan ini dengan client teams. Hubungi saya.

Sumber

  • OpenAI Developers, "Codex permissions": https://developers.openai.com/codex/permissions (diakses 2026-08-29)

  • OpenAI Developers, "Agent approvals and security": https://developers.openai.com/codex/agent-approvals-security (diakses 2026-08-29)

  • GitHub, openai/codex issue #32612, "Apply access-control changes to the currently running turn": https://github.com/openai/codex/issues/32612 (filed 2026-07-12, diakses 2026-08-29)

  • GitHub, openai/codex issue #23626, "Codex CLI /permissions omits Read-only in WSL2 but shows it in Windows PowerShell": https://github.com/openai/codex/issues/23626 (filed 2026-05-20, diakses 2026-08-29)

  • OpenAI Codex repository: https://github.com/openai/codex (diakses 2026-08-29)

Lanjutkan membaca

Agent Field Notes

Dapatkan edisi berikutnya.

Harness agen, runtime, keamanan, dan tata kelola, dijelaskan untuk orang-orang yang harus mengoperasikan sistem ini.

Menghadapi keputusan seperti ini?

Kami menjalankan tinjauan arsitektur, penilaian tata kelola, dan evaluasi framework dengan versi terkunci untuk tim yang mengambil keputusan penting tentang sistem agen.

Tentang penulis

Adam Maguire Wilson

Pendiri dan penasihat independen untuk sistem agen AI.

adam.mw