İzinler
Dosya sistemi ve ağ erişimi için beta Codex izin profillerini yapılandırın
İzin profilleri, Codex'in sizin adınıza çalıştırdığı yerel komutlara en az ayrıcalık sınırları uygulamanızı sağlar. Profil; komutların neleri okuyabileceğini veya nereye yazabileceğini belirleyen dosya sistemi kurallarıyla komutların hangi hedeflere erişebileceğini belirleyen ağ kurallarını birleştiren, adlandırılmış bir politikadır.
Makinenize veya ağınıza geniş kapsamlı erişim vermeden Codex'e mevcut sohbet için yeterli erişim sağlamak amacıyla profilleri kullanın. Örneğin salt okunur bir profil, Codex'in bir projeyi düzenlemeden incelemesine olanak tanıyabilirken yazma özellikli bir profil, düzenlemeleri seçilen çalışma alanı kökleriyle sınırlayabilir.
Yerel izin profilleri macOS, Linux, WSL ve yerel Windows üzerinde desteklenir. Platforma özgü ayrıntılar ve dikkat edilmesi gereken noktalar için Kapsam ve uygulama bölümüne bakın.
Codex bulut ağ ayarları için İnternet Erişimi bölümüne bakın.
Profil tanımlama ve seçme
Codex üç yerleşik izin profili içerir:
:read-only, yerel komut yürütmeyi salt okunur durumda tutar.:workspace, etkin çalışma alanı kökleri ve sistem geçici dizinleri içinde yazmaya izin verir.:danger-full-access, yerel korumalı alan kısıtlamalarını kaldırır ve yalnızca bu geniş erişim bilinçli olarak istendiğinde kullanılmalıdır.
[permissions.<name>] altında adlandırılmış bir profil oluşturun, ardından üst düzey
default_permissions anahtarını bu profil adına veya yukarıdaki yerleşik profillerden birine ayarlayın.
Bu örnekte project-edit, kullanıcı tarafından tanımlanan bir profil adıdır; yerleşik bir
değer değildir.
Kurumsal yöneticiler profiller tanımlayabilir ve kullanıcıların hangi profilleri
seçebileceğini yönetilen requirements.toml aracılığıyla kısıtlayabilir. allowed_permission_profiles
bulunduğunda, belirtilmeyen yerleşik profiller ve gelecekteki Codex sürümlerine
eklenen profiller dâhil olmak üzere belirtilmeyen tüm profiller reddedilir. Önerilen
yönetilen yapılandırma için Kullanılabilir izin profillerini denetleme
bölümüne bakın.
Özel profiller birbiriyle ilişkili iki kavram kullanır:
[permissions.<name>.workspace_roots], bu profil için çalışma alanı kökü sayılması gereken somut dizinleri ekler.[permissions.<name>.filesystem.":workspace_roots"], Codex'in her etkin çalışma alanı kökünde uyguladığı dosya sistemi kurallarını tanımlar: mevcut oturumun çalışma zamanı çalışma alanı kökleri ve yukarıda profil tarafından tanımlanan kökler.
Profiller normal yapılandırma katmanı modelini de kullanır. Daha yüksek öncelikli katmanlar, profilin tamamını yeniden belirtmeden aynı profil adı altındaki girdileri ekleyebilir veya değiştirebilir.
Örneğin kuruluş düzeyindeki bir yapılandırma ile kullanıcı düzeyindeki bir yapılandırma aynı profili birbirinden bağımsız olarak genişletebilir:
# /etc/codex/config.toml
[permissions.server.workspace_roots]
"~/code/server" = true# ~/.codex/config.toml
[permissions.server.workspace_roots]
"~/code/mobile-app" = trueserver etkinken her iki çalışma alanı kökü de etkin
profile katılır.
default_permissions = "project-edit"
[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = true
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"
[permissions.project-edit.network]
enabled = true
[permissions.project-edit.network.domains]
"api.openai.com" = "allow"
"objects.githubusercontent.com" = "allow"
"*.github.com" = "allow"
"tracking.example.com" = "deny"Bu profil:
- Yaygın geliştirici araçlarının ihtiyaç duyduğu asgari çalışma zamanı yollarını okur.
- Geçerli oturuma ve profil tarafından tanımlanan köklere aynı çalışma alanı kökü kurallarını uygular.
- Her kökün altında
.devcontainer/gibi IDE ile ilişkili ayarları salt okunur durumda tutar. - Bir glob kuralıyla eşleşen ortam dosyalarını reddeder.
- Yalnızca yapılandırılmış alan adı politikası üzerinden ağ erişimine izin verir.
Etkin bir profilde, daha geniş bir yol okunabilir veya yazılabilir olsa bile daha dar
kapsamlı reddetme kuralları yürürlükte kalır. Örneğin bir profil, çalışma alanı köklerini
yazılabilir yaparken eşleşen bir .env yolunu yine de deny olarak ayarlayabilir.
Profili genişletme
Bir profil çoğunlukla yerleşik veya başka bir adlandırılmış profille aynıysa extends kullanın.
Temel korumaların devralınması için sıfırdan başlamak yerine yerleşik bir profili
genişletmeyi tercih edin. Örneğin :workspace profilini genişletmek, açıkça
geçersiz kılmadığınız sürece çalışma alanı kökünün .codex dizinini salt okunur
tutar. Üst profili bir kez ayarlayın, ardından yalnızca farklı olan kuralları ekleyin
veya geçersiz kılın.
default_permissions = "project-edit"
[permissions.project-edit]
description = "Project editing with OpenAI API access."
extends = ":workspace"
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"
[permissions.project-edit.network]
enabled = true
[permissions.project-edit.network.domains]
"api.openai.com" = "allow"Bu profil :workspace ile başlar, eşleşen .env dosyalarının reddedilmesini sürdürür ve
api.openai.com adresine yapılan isteklere izin verir. Bir profil :read-only,
:workspace veya başka bir adlandırılmış profili genişletebilir. :danger-full-access profilini
genişletemez; Codex bilinmeyen üst profilleri ve kalıtım döngülerini de reddeder.
Yapılandırma belirtimi
| Girdi | Tür / değerler | Varsayılan | Ayrıntılar |
|---|---|---|---|
default_permissions |
Dize profil adı | Yok | Codex'in varsayılan olarak uyguladığı izin profilini adlandırır. [permissions] altındaki bir profille veya :workspace gibi yerleşik bir profille eşleşmelidir. Öngörülebilir davranış için bunu açıkça ayarlayın; yönetilen gereksinimler yalnızca hem :workspace hem de :read-only açıkça izinliyse bunu atlayabilir. Bu kurulumda yönetilen allowed_permission_profiles, izin profillerini kullanmasını söylemediği sürece Codex eski korumalı alan ayarlarını kullanır. |
[permissions.<name>] |
Tablo | Yok | Adlandırılmış bir profil tanımlar. default_permissions bir profili varsayılan olarak seçer; diğer izin profili ayarları da profil adını kullanır. |
permissions.<name>.description |
Dize | Yok | Profil için insanlar tarafından okunabilen bir açıklama sağlar. Profil, üst profilinin açıklamasını extends aracılığıyla devralmaz. |
permissions.<name>.extends |
Dize profil adı | Yok | Bu profili başka bir adlandırılmış profilden ya da yerleşik :read-only veya :workspace profilinden başlatır. Codex; :danger-full-access değerini, bilinmeyen üst profilleri ve kalıtım döngülerini reddeder. |
[permissions.<name>.workspace_roots] |
Tablo | Yok | Geçerli oturumun çalışma zamanı çalışma alanı köklerinin yanı sıra :workspace_roots dosya sistemi kurallarını alan, profil tarafından tanımlanmış çalışma alanı köklerini ekler. |
permissions.<name>.workspace_roots."<path>" |
Boole | false |
true olduğunda yolu profilin çalışma alanı kökü kümesine ekler. false olarak ayarlanan girdiler etkin değildir. |
[permissions.<name>.filesystem] |
Tablo | Yok | Dosya sistemi yollarını erişim değerleriyle veya kapsamlı alt yol eşlemeleriyle eşler. Eksik ya da boş dosya sistemi tabloları, dosya sistemi erişimini kısıtlı tutar ve başlangıç uyarısı verir. |
permissions.<name>.filesystem.glob_scan_max_depth |
Sayı | Yok | Codex, korumalı alan başlatılmadan önce eşleşmelerin anlık görüntüsünü aldığında Linux, WSL ve yerel Windows üzerinde okuma reddi glob genişletmesini sınırlar. Daha büyük değerler başlangıç tarama işini artırabilir. Sınırsız bir ** kalıbı için sınırlı ön genişletme gerektiğinde en az 1 değerini kullanın. |
[permissions.<name>.filesystem]."<path>" |
read, write veya deny |
Yok | Desteklenen bir yol için doğrudan erişim verir. deny erişimi reddeder ve eşit özgüllükteki write veya read girdilerine üstün gelir. Codex, etkin çalışma zamanının uygulayamayacağı doğrudan yazma kurallarını reddeder. |
[permissions.<name>.filesystem."<path>"]."<subpath>" |
read, write veya deny |
Yok | <path> öğesinin bir alt öğesine erişim verir. Temel yol için . kullanın. Diğer alt yollar göreli alt öğeler olmalı ve . veya .. bileşenlerini içeremez. |
[permissions.<name>.network] |
Tablo | Yok | Profil için ağ korumalı alan proxy'sini ve korumalı alan ağ politikasını yapılandırır. |
permissions.<name>.network.enabled |
Boole | false |
Profildeki korumalı alan komutları için ağ erişimini etkinleştirir. Bu, korumalı alan ağ politikasını değiştirir; ağ proxy'sini tek başına başlatmaz. |
[permissions.<name>.network.domains] |
Tablo | Yok | Ana makine kalıplarını allow veya deny ile eşler. allow girdisi yoksa alan adı istekleri engellenir. Reddetme girdileri izin verme girdilerini geçersiz kılar. |
permissions.<name>.network.domains."<pattern>" |
allow veya deny |
Yok | Tam ana makineleri, alt alan adları için *.example.com, kök alan adı ve alt alan adları için **.example.com ve yalnızca izin vermeye yönelik genel joker karakter olarak * değerini destekler. Ana makine kalıpları; kırpılarak, küçük harfe dönüştürülerek, sondaki nokta kaldırılarak ve basit bağlantı noktaları ya da köşeli ayraçlar çıkarılarak normalleştirilir. |
[permissions.<name>.network.unix_sockets] |
Tablo | Yok | Unix soketi izin verilenler listesi geçersiz kılmalarını eşler. Yalnızca Docker gibi yerel entegrasyonlar için kullanın. |
permissions.<name>.network.unix_sockets."<path>" |
allow veya deny |
Yok | Mutlak bir Unix soketi yolunu allow ile etkin izin verilenler listesine ekler veya deny ile reddeder. Reddedilen girdiler etkin izin verilenler listesine alınmaz. |
permissions.<name>.network.proxy_url |
URL dizesi | http://127.0.0.1:3128 |
HTTP_PROXY, HTTPS_PROXY, websocket proxy değişkenleri ve ilgili araç proxy ortam değişkenleri için kullanılan HTTP proxy dinleyicisi. |
permissions.<name>.network.enable_socks5 |
Boole | true |
ALL_PROXY ve FTP proxy değişkenleri için kullanılan SOCKS5 dinleyicisini etkinleştirir. |
permissions.<name>.network.socks_url |
URL dizesi | http://127.0.0.1:8081 |
SOCKS5 dinleyici adresi. |
permissions.<name>.network.enable_socks5_udp |
Boole | true |
SOCKS5 dinleyicisi etkinleştirildiğinde SOCKS5 UDP desteğini etkinleştirir. |
permissions.<name>.network.allow_upstream_proxy |
Boole | true |
Ağ korumalı alan proxy'sinin giden istekler için üst düzey HTTP(S)_PROXY ve ALL_PROXY ayarlarını dikkate almasına izin verir. |
permissions.<name>.network.allow_local_binding |
Boole | false |
true olduğunda yerel/özel ağ korumasını devre dışı bırakır. false olduğunda localhost veya 127.0.0.1 gibi tam yerel değişmez değerlerin açıkça izin verilenler listesine alınması gerekir ve yerel ya da özel IP'lere çözümlenen ana makine adları engellenmeye devam eder. |
permissions.<name>.network.dangerously_allow_non_loopback_proxy |
Boole | false |
Proxy dinleyicilerinin geri döngü dışındaki adreslere bağlanmasına izin verir. Olağan yerel geliştirme için ayarlamadan bırakın. |
permissions.<name>.network.dangerously_allow_all_unix_sockets |
Boole | false |
Unix soketi proxy kullanımının desteklendiği yerlerde Unix soketi izin verilenler listesini atlar. Bu, geniş kapsamlı bir yerel kaçış yoludur. |
Dosya sistemi izinleri
Dosya sistemi girdileri read, write veya deny kullanır:
| Erişim | Anlamı |
|---|---|
read |
Komutların yol altındaki dosyaları okumasına ve dizinleri listelemesine izin verir. Komutlar burada dosya oluşturamaz, değiştiremez, yeniden adlandıramaz veya silemez. |
write |
İşletim sistemi izin verdiğinde dosya oluşturma, yeniden adlandırma ve silme dâhil olmak üzere komutların yol altındaki dosyaları okumasına ve değiştirmesine izin verir. |
deny |
Yol altında hem okumayı hem de yazmayı reddeder. Daha geniş bir read veya write izninden reddedilen bir alt yol ayırmak için kullanın. |
Daha özgül girdiler, daha geniş girdileri geçersiz kılar. İki girdi aynı yolu
hedeflediğinde deny, write değerine; write ise
read değerine üstün gelir.
Bu öncelik, bir profilin önce geniş bir çalışma alanını tanımlamasına, ardından okunamaz durumda kalması gereken dosya veya dizinleri ayırmasına olanak tanır:
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"Bu örnekte çalışma alanı kökü yazılabilir kalır, .devcontainer/ yazılabilir hâle
gelmeden okunabilir kalır ve eşleşen ortam dosyaları korumalı alan komutları
için erişilemez durumda kalır.
Daha özgül bir yol, daha geniş bir reddetme kuralı içindeki daha dar bir alt ağacı yeniden açabilir:
[permissions.project-edit.filesystem]
"~/Documents" = "deny"
"~/Documents/codex" = "write"Desteklenen yol biçimleri:
| Yol | Anlamı | Kapsamlı alt yollar |
|---|---|---|
:root |
Dosya sistemi kökü | Yalnızca . |
:minimal |
Yaygın araçların ihtiyaç duyduğu platform ve çalışma zamanı yolları | Yalnızca . |
:workspace_roots |
Geçerli oturumun çalışma alanı kökleri ile etkinleştirilmiş, profil tarafından tanımlanan çalışma alanı kökleri | Evet |
:tmpdir |
Varsa $TMPDIR konumu |
Yalnızca . |
:slash_tmp |
Varsa /tmp klasörü |
Yalnızca . |
/absolute/path |
macOS/Linux/WSL üzerinde /path veya yerel Windows üzerinde C:\path gibi mutlak bir platform yolu |
Evet |
~/path |
Geçerli kullanıcının ana dizini altındaki bir yol | Evet |
Yerel Windows üzerinde ana dizine göreli yollar, ~\work gibi ters eğik çizgiler de kullanabilir.
:root öğesini yalnızca bir profil bilinçli olarak geniş okuma kapsamına ihtiyaç duyduğunda kullanın:
[permissions.audit.filesystem]
":root" = "read"Erişimi çalışma alanı köküne göreli alt yollarla sınırlamak için :workspace_roots
altındaki iç içe girdileri kullanın:
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write" # each workspace root
"docs" = "read" # each workspace-root docs directory
"generated" = "deny" # each workspace-root generated directoryİç içe alt yollar kendi çalışma alanı kökleri içinde kalmalıdır. ../other-repo
gibi üst dizine geçişler reddedilir.
Tam yollar veya glob'larla okumayı reddetme
Daha geniş bir profil kuralı yakındaki erişime izin verse bile Codex'in okumaması
gereken dosya veya alt ağaçlar için deny kullanın. Tam yollar,
~/.ssh gibi sabit konumlar için uygundur. Glob kalıpları ise bir profilin,
tam konumları depolar arasında değişen hassas dosya ailesini kapsaması gerektiğinde daha uygundur.
Bir glob :workspace_roots altında bulunduğunda Codex bunu her etkin çalışma alanı
köküne göre yorumlar. Örneğin:
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"Bu kural, çalışma zamanı veya profil tarafından tanımlanan her çalışma alanı kökü altında bulunan,
eşleşen .env dosyalarının okunmasını reddeder. Ortam dosyalarını, oluşturulan gizli
değerleri veya kimlik bilgileri içeren benzer dosyaları okunamaz tutarken normal çalışma alanı
yazmalarını korumak istediğinizde bunu kullanın.
deny glob kalıpları okuma reddi kuralları olarak desteklenir. read veya write glob'ları
Linux, WSL ve yerel Windows korumalı alanında daha az taşınabilirdir; bu nedenle mümkün olduğunda
tam yolları veya "docs/**" = "read" gibi alt ağaç kurallarını tercih edin.
Linux, WSL ve yerel Windows üzerinde sınırsız bir ** okuma reddi kalıbı,
korumalı alan başlamadan önce sınırlı ön genişletme gerektirebilir. "**/*.env" = "deny"
gibi sınırsız bir kalıp kullandığınızda glob_scan_max_depth değerini ayarlayın:
[permissions.project-edit.filesystem]
glob_scan_max_depth = 3
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"glob_scan_max_depth en az 1 olmalıdır. Daha yüksek değerler korumalı alan
başlangıcından önce daha derin tarama yapar; bu da Linux, WSL ve yerel Windows üzerinde başlangıç
işini artırabilir. Sınırlı genişletme kullanmamayı tercih ederseniz *.env,
*/*.env ve */*/*.env gibi açık derinlikleri sıralayın.
Aynı kuralların geçerli oturum kökünden daha fazlasına uygulanması gerektiğinde profile yeniden kullanılabilir çalışma alanı kökleri ekleyin:
[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = trueBu profil etkinken Codex, :workspace_roots kurallarını geçerli oturumun çalışma zamanı
çalışma alanı köklerine ve etkinleştirilmiş, profil tarafından tanımlanan her çalışma alanı köküne uygular.
Yerel Windows üzerinde D:\work gibi sürücü harfli yollar ve \\server\share gibi
UNC yolları mutlak yollar olarak desteklenir.
Ağ izinleri
Seçilen profil için ağ erişimine izin vermek üzere enabled = true değerini ayarlayın:
[permissions.project-edit.network]
enabled = trueAğ erişimi etkinleştirildiğinde Codex varsayılan olarak tam ağ davranışını kullanır. Çoğu profil alan adı kuralları da tanımlamalıdır:
[permissions.project-edit.network.domains]
"example.com" = "allow" # exact host
"*.example.com" = "allow" # subdomains only
"**.example.com" = "allow" # apex and subdomains
"ads.example.com" = "deny" # deny wins over allowAğ korumalı alan proxy'si varsayılan olarak yerel dinleyicilere bağlanır:
[permissions.project-edit.network]
enabled = true
proxy_url = "http://127.0.0.1:3128"
enable_socks5 = true
socks_url = "http://127.0.0.1:8081"
enable_socks5_udp = trueBelirli bir çalışma zamanıyla entegrasyon yapmıyorsanız bu dinleyici ayarlarını
varsayılan değerlerinde bırakın. dangerously_* ağ anahtarları, özel ortamlar
için kaçış yollarıdır ve olağan yerel geliştirme için kullanılmamalıdır.
Yerel ve özel ağlar
Codex, DNS yeniden bağlama saldırılarına ve yerel hizmetlere yanlışlıkla erişime karşı savunma olarak varsayılan biçimde bir yerel/özel ağ koruması uygular. Değişmez bir yerel hedefe bilinçli olarak izin vermek için tam ana makineyi veya IP değişmez değerini izin verilenler listesine ekleyin:
[permissions.project-edit.network.domains]
"localhost" = "allow"
"127.0.0.1" = "allow"allow_local_binding = true değerini yalnızca profil, yerel veya özel adreslere çözümlenen ve izin
verilenler listesine alınmış ana makine adlarına erişmek zorundaysa ayarlayın:
[permissions.project-edit.network]
enabled = true
allow_local_binding = true
[permissions.project-edit.network.domains]
"localhost" = "allow"Unix soketleri
Unix soketi proxy kullanımı, Docker gibi araçlar için yerel bir kaçış yoludur. Bunu ölçülü kullanın:
[permissions.project-edit.network.unix_sockets]
"/var/run/docker.sock" = "allow"
"/tmp/old.sock" = "deny"Devralınan bir izin girdisi dâhil olmak üzere bir soket yolunu reddetmek için deny
kullanın. Reddedilen soket yolları etkin izin verilenler listesine alınmaz.
Unix soketleri etkinleştirildiğinde proxy dinleyicilerini geri döngü adreslerine bağlı tutun.
Eski korumalı alan ayarlarından geçiş
Hem dosya sistemi hem de ağ davranışını yeniden kullanılabilir tek bir profille tanımlamak
istediğinizde izin profilleri, eski sandbox_mode ve sandbox_workspace_write birleşiminin
yerini alır. Bir oturumda sistemlerden yalnızca birini kullanın, ikisini birden kullanmayın.
Önerilen başlangıç noktaları:
- Salt okunur bir iş akışı için yerleşik
:read-onlyprofilini kullanın veya yalnızca gereken yerlerde okuma erişimi olan özel bir profil tanımlayın. - Çalışma alanını düzenlemek için yerleşik
:workspaceprofilini kullanın veya:workspace_rootsüzerinden yazan ve yalnızca iş akışının ihtiyaç duyduğu ek geçici ya da önbellek yollarını ekleyen özel bir profil tanımlayın. - Kısıtlanmamış yerel yürütme için
:danger-full-accessprofilini yalnızca bilinçli olarak en geniş yerel erişim modelini istediğinizde kullanın.
Profiller bir oturumun varsayılan yerel duruşunu tanımlar. Kuruluş tarafından yönetilen gereksinimler, kullanıcı yapılandırmasının genişletmemesi gereken kısıtlamalar eklemeye devam edebilir. Yönetici tarafından uygulanan dosya sistemi ve ağ kısıtlamaları için Yönetilen yapılandırma bölümüne bakın.
Kapsam ve uygulama
İzin profilleri, yerel korumalı alan komut yürütmesinin sınırlarını tanımlar. Bunları onay politikalarıyla ve bağlayıcılar, MCP sunucuları, yerleşik tarayıcı, Computer Use ve Codex bulut için ayrı denetimlerle birlikte kullanın.
Profillerin denetledikleri
- Yerel komut yürütme: İzin profilleri, makinenizde çalışan korumalı alan komutlarını yönetir. Bağlayıcılar, MCP sunucuları, tarayıcı veya Computer Use yüzeyleri, Codex bulut ortam ayarları ve onaylanmış yetki yükseltmeleri kendi denetimlerini kullanır.
- Dosya sistemi yazmaları: Yazma özellikli bir profil kalıcı değişiklikler oluşturabilir. Betiklere, derleme adımlarına, paket yöneticisi kancalarına, kabuk başlangıç dosyalarına ve paylaşılan dizinlere yapılan yazmaları hassas kabul edin; çünkü sonraki araçlar veya kullanıcılar bu dosyaları özgün korumalı alan bağlamının dışında yürütebilir.
- Giden hedefler: Ağ alan adı kuralları, korumalı alan komut trafiğinin ağ proxy'si üzerinden gidebileceği yerleri kısıtlar. İzin verilen bir hedefin güvenilir olup olmadığını belirlemezler ve joker karakterli izin kuralları geniş kapsamlı kalır.
- Yerel hizmetler: Yerel ve özel ağ hedefleri varsayılan olarak engellenir.
localhostdeğerini, özel IP'leri veya Unix soketlerini izin verilenler listesine eklemek ya daallow_local_binding = truedeğerini ayarlamak, yerel hizmetlere erişimi açıkça etkinleştirir.
Uygulamanın çalışma biçimi
- macOS üzerinde Codex, Seatbelt korumalı alan profillerini kullanır. Seçilen politika platform korumalı alanı tarafından uygulanamıyorsa Codex, komutu korumalı alan dışında sessizce çalıştırmak yerine çalıştırmayı reddeder.
- Linux ve WSL üzerinde Codex, bubblewrap ve seccomp kullanır; Landlock ise uyumluluk geri dönüş yolları için kullanılabilir. En güçlü uygulama yolu, kullanıcı ad alanlarına ve çekirdek desteğine bağlıdır; kısıtlı kapsayıcı ana makineleri uyumluluk yollarını zorunlu kılabilir ve desteklenmeyen bölünmüş politikalar reddedilir.
- Yerel Windows üzerinde
elevatedkorumalı alanı, özel daha düşük ayrıcalıklı korumalı alan kullanıcılarını, dosya sistemi izin sınırlarını ve güvenlik duvarı kurallarını kullanabildiği için en güçlü seçenektir.unelevatedkorumalı alanı, daha zayıf ağ yalıtımına sahip bir geri dönüş seçeneğidir ve her bölünmüş okuma/yazma ayrımını uygulayamaz; bu nedenle desteklenmeyen politikalar reddedilir. Linux korumalı alan modeline ihtiyaç duyduğunuzda WSL kullanın.
İşletim rehberi
Özellikle yazma veya giden ağ erişimi izni verdiğinizde, görevin tamamlanmasına olanak tanıyan en dar profili seçin. Onay politikasını, gizli değerlerin işlenmesini ve izin kurallarını bu erişim düzeyiyle uyumlu tutun.
Yaygın profiller
Ağ izin verilenler listesiyle salt okunur
default_permissions = "readonly-net"
[permissions.readonly-net.filesystem]
":minimal" = "read"
[permissions.readonly-net.filesystem.":workspace_roots"]
"." = "read"
[permissions.readonly-net.network]
enabled = true
[permissions.readonly-net.network.domains]
"api.openai.com" = "allow"Çalışma alanıyla sınırlı dosya erişimi
Aşağıda, dosya sisteminin geri kalanına okuma erişimini reddederken (:minimal tarafından belirlenen sınırlı istisnalarla) çalışma alanı klasörlerinizi Codex için yazılabilir hâle getiren bir izin profili örneği verilmiştir.
default_permissions = "workspace-only"
[permissions.workspace-only]
# By extending the :workspace profile, you get Codex's safeguards to ensure
# subfolders such as .codex/ and .git/ within a workspace root are read-only
# while the rest of the folder is writable.
extends = ":workspace"
[permissions.workspace-only.filesystem]
# By default, deny read access to all files on disk.
":root" = "deny"
# Though in practice, a software agent needs to be able to read folders that
# contain common tools, such as `/usr/bin`, to get work done, so grant access
# to a "minimal" set of files and folders, as determined by Codex.
":minimal" = "read"
# By extending the :workspace profile, :tmpdir and :slash_tmp are "write" by
# default, though you can deny access to them altogether, if desired.
":tmpdir" = "deny"
":slash_tmp" = "deny"Ağ olmadan çalışma alanına yazma
default_permissions = "project-edit"
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
[permissions.project-edit.network]
enabled = falseHerkese açık web erişimiyle çalışma alanına yazma
default_permissions = "workspace-net"
[permissions.workspace-net.filesystem]
":minimal" = "read"
[permissions.workspace-net.filesystem.":workspace_roots"]
"." = "write"
[permissions.workspace-net.network]
enabled = true
[permissions.workspace-net.network.domains]
"*" = "allow"Genel "*" izin kuralını yalnızca herkese açık ağ erişimine izin vermeyi
amaçladığınızda kullanın. Reddetme kuralları geniş bir izin verilenler listesini daraltabilir.