Inside the Harness: Turn-Scoped Permissions bir Agent-Runtime Primitive'e Dönüşüyor
OpenAI Codex permissions'ı artık machine veya user'a değil single agent turn'e bağlı olarak treat ediyor. Turn-scoped permissions nedir, hangi threat model'e cevap verir, runtimes nasıl implement eder ve snapshot semantics neden settings UI'dan daha önemli?
Bu sayfada
OpenAI Codex repository'de bir issue var, mid-July filed, agent runtimes'ın nereye gittiğini çoğu launch post'tan daha iyi anlatıyor. Reporter şunu fark etti: turn çalışırken Codex permission mode değiştirirseniz running turn sizi ignore ediyor. Başladığı permissions ile devam ediyor ve new setting sadece next turn için geçerli oluyor. Access'i mid-turn yükseltin, agent blocked kalıyor. Düşürün, daha kötü: UI restricted diyor ama agent birkaç dakika daha original powers ile devam ediyor.
Bu behaviour obvious sense'de bug değil. Quietly standard hale gelen design decision'ın visible edge'i: permissions turn-scoped, turn başladığında snapshotted, user/machine/session değil unit of work property. Bu piece primitive'i, threat model'i ve current reference implementation Codex'in wiring'ini anlatıyor.
Temel çıkarımlar - Turn-scoped permissions, runtime'ın turn başında approval policy, sandbox policy ve permission profile snapshot alması ve every tool call'un snapshot against run etmesi. - Threat model malicious user değil. Hostile instructions, prompt injection izleyen veya off-task drift eden capable agent, sizin credentials ile sizin machine'de. - Codex üç bağımsız dial kullanıyor: approval policy, sorar mı; sandbox mode, commands neye dokunur; permission profiles, fine-grained filesystem/network rules, OS enforced. - Enforcement model below: macOS Seatbelt, Linux bubblewrap+seccomp, Windows dedicated sandbox. Policy enforce edilemiyorsa Codex command'i refuse. - Unresolved frontier mid-turn mutation: snapshot turn boyunca immutable, safe ama bazen maddening.
Ne oldu
Late July/early August'ta Codex permission surface iki coarse setting'den policy engine'e benzeyen yapıya grew. Old model config.toml içinde sandbox_mode (read-only, workspace-write, danger-full-access) ve approval_policy (untrusted, on-request, never). New model permission profiles beta ekliyor: named, composable policies, filesystem rules (read, write, deny, deny wins) ve local proxy enforced domain allowlists. Built-ins :read-only, :workspace, :danger-full-access; extend ediliyor.
Interaction model turn-native oldu. /permissions running session içinde modes değiştiriyor. Granular approval policy sandbox escalations ve MCP elicitations gibi categories interactive tutup others auto-reject edebilir; distinct request_permissions, agent'ın mid-task more access istemesi. Approvals automatic reviewer agent'a route edilip exfiltration, credential probing, destructive actions için screen edilebilir, OpenAI approvals/security docs.
Single announcement değil. Runtime, operating systems'ın user accounts geliştirmesi gibi permission layer geliştiriyor, reality contact ile.
Codex sandbox mode/approval policy'den named permission profiles, per-path filesystem rules, proxied network domain rules, mid-session switching, granular categories, optional auto-review agent modeline evrildi, permissions ve approvals docs.
"Turn-scoped" actually ne demek
Agent'ın yapabilecekleri single turn lifetime'a bound, turn start'ta captured, end'te releasable. User'a değil, machine'e değil, session'a bile değil. Same session morning code review, afternoon dependencies install olabilir.
Issue snapshot'ın real proof'u: running turn "retains a permission or sandbox snapshot created when the turn starts". Proposed fix updated approval/sandbox/profile'i active turn'e propagate etmek veya internal pause-resume ile fresh permissions altında restart. Acceptance criteria first-class turn-scoped spec gibi: reducing mid-turn new violating operations block, raising unblock, resumed/delegated/compacted turns updated context preserve.
Neden snapshot? Mutable global state daha kötü. Agent'ın read ettiği content state'i influence edebiliyorsa next action'a lever kazanır. Immutable-per-turn snapshot clear intent moment'ta human/policy decision'i freeze eder, agent mid-flight negotiate edemez. Turn smallest unit of trust olur. "Review this diff" ve "push to main" same session olsa da same permission context olmamalı.
Codex permissions'ı turn-start snapshot'a bind ediyor: July 2026 issue mid-turn access changes running turn'ü etkilemiyor ve updated policies active turn'e propagation öneriyor.
Threat model
Burada precise olmak değerli, çünkü "agent security" çok fazla vague worry cover ediyor. Turn-scoped permissions arkasındaki threat model üç named actor içeriyor ve hiçbiri hacker in hoodie değil.
Prompt injection headline threat. Agent untrusted repos, web pages, tickets, tool output okur. Default web search cached to reduce live injection; network access injected agent'a fetch/follow instructions verir. Network-off sandbox blast radius caps.
Drift/over-reach quiet threat. Legitimate capable agent install/fetch/cleanup yapabilir. Boundary OS enforced, Seatbelt, bubblewrap+seccomp, Windows sandbox. Enforce edilemiyorsa command refuse. Fail closed.
Credential exposure multiplier. Full access container + malicious project = credentials exfiltration. "**/*.env" = "deny", .git, .codex, .agents read-only, local/private network block. Agentic architecture same principle: harness holds secrets.
Codex threat model prompt injection, agent drift, credential exposure üzerine kurulu, network-off, OS sandbox, deny globs, read-only sensitive paths ve local-network blocking ile, security docs.
Implementation nasıl birleşiyor
Own runtime thinking için steal etmeye değer üç implementation detail var.
Deny > write > read equal specificity. Broad grant sonra carve-out. More specific overrides. Denied child writable parent içinde denied kalır. Narrow subtree reopen mümkün. Least-privilege için doğru precedence.
Network access/filtering separate. network.enabled = true connectivity; features.network_proxy = true domain enforcement. Proxy yoksa unrestricted outbound + false governance. Deny wins, localhost default blocked.
Old/new compose etmiyor. Any loaded sandbox_mode profiles'ı ignore ettirir. Admin allowed_permission_profiles ile force edebilir. Lesson: two systems "both apply" ambiguity. Pick one, verify /permissions, /status.
Beyond CLI: per-task snapshot, credentials tool layer, enforce below model, expire at end. Vendor vs own = build versus buy; self-host = self-hosted agent.
Codex profiles deny-over-write-over-read precedence, separate network enablement/proxy enforcement ve no legacy composition kullanıyor, permissions docs.
Şimdi ne yapmalı
Bugün:
/permissionsve/statusile actual config bakın.sandbox_modevarsa profiles silently off.Bu hafta:
:workspaceextend custom profile, deny**/*.env, only needed API domains,network_proxyon.codex debugile test. Third-party code:read-onlyderived.Bu ay: Runtime build/wrap ediyorsanız turn permission unit: snapshot start, expire end, secrets outside model context, fail closed. Mid-turn mutation policy yazın. "Nothing until next turn" safe ama UI dürüst olmalı.
FAQ
Turn-scoped permissions nedir?
Runtime turn start'ta approval, sandbox, filesystem/network rules snapshot alır ve every tool call'a uygular. Permission unit of work'e ait, user/machine/session'a değil. Elevated access end'te expire.
Restricted OS user'dan farkı?
OS user machine-wide static blanket. Turn scoping same session'da task-specific read/write/network ve natural expiry sağlar.
Prompt injection permissions değiştirebilir mi?
Active turn içinde hayır, snapshot fixed. Next turn ve already allowed surfaces residual risk.
Profiles stable mi?
Beta, legacy ile compose değil. Direction of travel. Client version başına verify /status.
Sonuç
Agent permissions Unix gibi root-or-nothing'dan least-privilege auditable boundaries'e gidiyor, fakat unit process/user değil turn. Codex şu an best reference; immutable mid-turn snapshot safety/dynamic tension'ı gösteriyor. Serious runtimes bu primitive'i alacak. Snapshot semantics wrong yapanlar public learn edecek.
Own agents permission layer design ediyorsanız iletişim.
Kaynaklar
OpenAI Developers, "Codex permissions": https://developers.openai.com/codex/permissions (erişim 2026-08-29)
OpenAI Developers, "Agent approvals and security": https://developers.openai.com/codex/agent-approvals-security (erişim 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, erişim 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, erişim 2026-08-29)
OpenAI Codex repository: https://github.com/openai/codex (erişim 2026-08-29)
Okumaya devam et
Agent Field Notes
Bir sonraki sayıyı alın.
Ajan harness’ları, çalışma zamanı ortamları, güvenlik ve yönetişim; bu sistemleri işletmek zorunda olanlar için açıklanıyor.
Buna benzer bir kararla mı karşı karşıyasınız?
Aracı sistemleri hakkında önemli kararlar alan ekipler için mimari incelemeler, yönetişim değerlendirmeleri ve sürümü sabitlenmiş çerçeve karşılaştırmaları yürütüyoruz.