TR · EN · security.txt · Audit trail

Güvenlik / Security

TR — kim düşman varsayılır

Beyin (MCP istemcisi) düşmandır: herhangi bir araç adı, argüman, tekrar ve sosyal istem gönderebilir. Araç sunucusu düşmandır: yalan söyleyebilir, asılı kalabilir, beyan edilen etkinin dışına yazabilir. İstem enjeksiyonu politikayla süzülmez; politika yalnız araç adı ve kapsam görür.

İmzalı olan: karar (allow/deny), politika cümlesinin hash’i, varsa inputs belgesi, etki satırı, çağrı anındaki receipt. Tanık varsayılan olarak self; verax witness ikinci bir süreç olarak koşarsa etki satırı same-org olur ve dayanıklı checkpoint imzalanır. O süreç aynı makinede, aynı operatörün altındadır: ayrı anahtar, ayrı güven alanı değil. Pin varsayılanı gövdenin kendi kayıt anahtarıdır; dış kök değildir. Üçüncü taraf doğrulama iddiası yoktur.

Bu sayfa 18 Eylül 2026’ya kadar üç şeyi “yok” diye yazıyordu; kodda üçü de vardı. Kiracı sınırı var: bellek ve gelen kutusu tenants/<tenantKey>/ altında durur, anahtar SHA-256 {iss, sub} (varsa tenant / org ile), ve başka kiracının kimliği gövdesiz imzalı bir deny ile cevaplanır. Yeniden deneme var: aynı _ref bir kez icra edilir, kalanlar tekrar oynatılır, retry bugünkü politika ve kapsamla yeniden değerlendirilir. Tanık yukarıda. Üçü de 0.1.2’de düzeltme gördü; hangi satırın hangi sürümde geldiği ve hangi testin tuttuğu STATUS tablosunda.

Açık boşluklar: _inputs isteğe bağlı — policy.requireInputs açılmadıkça, ve yayınlanan politikada kapalı; allow ile etki arasında çökme olursa sonraki retry ikinci kez koşabilir; kiracı sınırı aynı disk, aynı süreç, aynı operatör üzerinde durur; tek kopya defter suskunluğu “hiçbir şey olmadı”dan ayırt edilemez; yükler düz metin.

EN — who is assumed hostile

The brain (MCP client) is hostile: it may send any tool name, any arguments, any replay, and any social prompt. The tool server is hostile: it may lie, hang, or write outside the declared effect. Prompt injection through tool results is not filtered by policy; policy sees tool name and scopes only.

What is signed: the decision (allow/deny), the policy sentence hash, an inputs document when present, the effect row, and a receipt at call time. The witness is self by default; when verax witness runs as a second process, the effect row is same-org and a durable checkpoint is signed. That process sits on the same host under the same operator: a separate key, not a separate trust domain. The default pin is the body's own record key, not an external root. There is no claim of third-party verification.

Until 18 September 2026 this page called three things missing that the code already had. There is a tenant boundary: memory and inbox live under tenants/<tenantKey>/, the key is SHA-256 of {iss, sub} plus a tenant or org claim when present, and another tenant's id is answered with a signed deny and no body. Retry is designed: one _ref executes once and the rest replay, and a retry is evaluated against the policy and scopes in force now. The witness is above. All three were corrected in 0.1.2; which row shipped in which version, and the test that holds each one up, are in the STATUS matrix.

Open gaps: _inputs is optional unless policy.requireInputs is on, and it is off on the shipped policy; a crash between the allow and the effect can let the next retry run a second time; the tenant boundary stops at the same disk, the same process and the same operator; silence on a single-host ledger cannot be told from “nothing happened”; payloads are plaintext.