[{"data":1,"prerenderedAt":388},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Ffs":3},{"id":4,"title":5,"body":6,"description":15,"extension":381,"meta":382,"navigation":383,"path":384,"seo":385,"stem":386,"__hash__":387},"docs\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Ffs.md","fs",{"type":7,"value":8,"toc":377},"minimark",[9,12,16,116,139,249,259,264,288,291,297,364,373],[10,11,5],"h1",{"id":5},[13,14,15],"p",{},"Controls filesystem access inside the capsule. All patterns are glob strings resolved\nrelative to the agent folder root.",[17,18,23],"pre",{"className":19,"code":20,"language":21,"meta":22,"style":22},"language-ts shiki shiki-themes dark-plus","type FsPolicy = {\n    read?:     string[]   \u002F\u002F paths the agent may read\n    write?:    string[]   \u002F\u002F paths the agent may write or create\n    deny?:     string[]   \u002F\u002F overrides read and write at every enforcement layer\n    escalate?: string[]   \u002F\u002F pause and prompt before allowing\n}\n","ts","",[24,25,26,43,63,79,94,110],"code",{"__ignoreMap":22},[27,28,31,35,39],"span",{"class":29,"line":30},"line",1,[27,32,34],{"class":33},"scz_3","type",[27,36,38],{"class":37},"sNl3T"," FsPolicy",[27,40,42],{"class":41},"sTNBD"," = {\n",[27,44,46,50,53,56,59],{"class":29,"line":45},2,[27,47,49],{"class":48},"s3F5K","    read",[27,51,52],{"class":41},"?:     ",[27,54,55],{"class":37},"string",[27,57,58],{"class":41},"[]   ",[27,60,62],{"class":61},"sOLPB","\u002F\u002F paths the agent may read\n",[27,64,66,69,72,74,76],{"class":29,"line":65},3,[27,67,68],{"class":48},"    write",[27,70,71],{"class":41},"?:    ",[27,73,55],{"class":37},[27,75,58],{"class":41},[27,77,78],{"class":61},"\u002F\u002F paths the agent may write or create\n",[27,80,82,85,87,89,91],{"class":29,"line":81},4,[27,83,84],{"class":48},"    deny",[27,86,52],{"class":41},[27,88,55],{"class":37},[27,90,58],{"class":41},[27,92,93],{"class":61},"\u002F\u002F overrides read and write at every enforcement layer\n",[27,95,97,100,103,105,107],{"class":29,"line":96},5,[27,98,99],{"class":48},"    escalate",[27,101,102],{"class":41},"?: ",[27,104,55],{"class":37},[27,106,58],{"class":41},[27,108,109],{"class":61},"\u002F\u002F pause and prompt before allowing\n",[27,111,113],{"class":29,"line":112},6,[27,114,115],{"class":41},"}\n",[13,117,118,121,122,125,126,129,130,132,133,135,136,138],{},[24,119,120],{},"deny"," is checked before ",[24,123,124],{},"read"," and ",[24,127,128],{},"write",". A path matching ",[24,131,120],{}," is blocked regardless\nof whether it also matches ",[24,134,124],{}," or ",[24,137,128],{},".",[17,140,142],{"className":19,"code":141,"language":21,"meta":22,"style":22},"export default defineAgent({\n    policy: {\n        fs: {\n            read:  [\".\u002F**\"],\n            write: [\".\u002Fsrc\u002F**\", \".\u002FCHANGELOG.md\"],\n            deny:  [\"**\u002F.env*\", \"**\u002F*.key\", \"**\u002Fnode_modules\u002F**\"],\n        },\n    },\n})\n",[24,143,144,160,168,175,190,209,231,237,243],{"__ignoreMap":22},[27,145,146,150,153,157],{"class":29,"line":30},[27,147,149],{"class":148},"sYbnZ","export",[27,151,152],{"class":148}," default",[27,154,156],{"class":155},"sCudf"," defineAgent",[27,158,159],{"class":41},"({\n",[27,161,162,165],{"class":29,"line":45},[27,163,164],{"class":48},"    policy:",[27,166,167],{"class":41}," {\n",[27,169,170,173],{"class":29,"line":65},[27,171,172],{"class":48},"        fs:",[27,174,167],{"class":41},[27,176,177,180,183,187],{"class":29,"line":81},[27,178,179],{"class":48},"            read:",[27,181,182],{"class":41},"  [",[27,184,186],{"class":185},"sKc5r","\".\u002F**\"",[27,188,189],{"class":41},"],\n",[27,191,192,195,198,201,204,207],{"class":29,"line":96},[27,193,194],{"class":48},"            write:",[27,196,197],{"class":41}," [",[27,199,200],{"class":185},"\".\u002Fsrc\u002F**\"",[27,202,203],{"class":41},", ",[27,205,206],{"class":185},"\".\u002FCHANGELOG.md\"",[27,208,189],{"class":41},[27,210,211,214,216,219,221,224,226,229],{"class":29,"line":112},[27,212,213],{"class":48},"            deny:",[27,215,182],{"class":41},[27,217,218],{"class":185},"\"**\u002F.env*\"",[27,220,203],{"class":41},[27,222,223],{"class":185},"\"**\u002F*.key\"",[27,225,203],{"class":41},[27,227,228],{"class":185},"\"**\u002Fnode_modules\u002F**\"",[27,230,189],{"class":41},[27,232,234],{"class":29,"line":233},7,[27,235,236],{"class":41},"        },\n",[27,238,240],{"class":29,"line":239},8,[27,241,242],{"class":41},"    },\n",[27,244,246],{"class":29,"line":245},9,[27,247,248],{"class":41},"})\n",[13,250,251,252,254,255,258],{},"No ",[24,253,5],{}," block means unrestricted filesystem access. An explicit empty ",[24,256,257],{},"read: []"," blocks\nall reads.",[260,261,263],"h2",{"id":262},"os-enforcement","OS enforcement",[13,265,266,267,274,275,277,278,281,282,284,285,287],{},"On Linux with ",[268,269,271],"a",{"href":270},"\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fuser",[24,272,273],{},"user"," set, the ",[24,276,5],{}," policy is applied\nas ",[24,279,280],{},"setfacl"," ACLs at boot in addition to the mediator gate. The OS enforces the same\ngrants and denies at the kernel level — a tool that bypasses the mediator still cannot\nread files the system user has no access to. ",[24,283,120],{}," patterns are subtracted from ACL\ngrants before ",[24,286,280],{}," is called, preserving the same override semantics.",[260,289,290],{"id":290},"escalate",[13,292,293,294,296],{},"Paths matching ",[24,295,290],{}," pause execution and surface the call for human approval before\nproceeding. Useful for sensitive paths that are sometimes fine and sometimes not.",[17,298,300],{"className":19,"code":299,"language":21,"meta":22,"style":22},"export default defineAgent({\n    policy: {\n        fs: {\n            read:     [\".\u002F**\"],\n            escalate: [\".\u002Fsecrets\u002F**\", \".\u002F.ssh\u002F**\"],\n        },\n    },\n})\n",[24,301,302,312,318,324,335,352,356,360],{"__ignoreMap":22},[27,303,304,306,308,310],{"class":29,"line":30},[27,305,149],{"class":148},[27,307,152],{"class":148},[27,309,156],{"class":155},[27,311,159],{"class":41},[27,313,314,316],{"class":29,"line":45},[27,315,164],{"class":48},[27,317,167],{"class":41},[27,319,320,322],{"class":29,"line":65},[27,321,172],{"class":48},[27,323,167],{"class":41},[27,325,326,328,331,333],{"class":29,"line":81},[27,327,179],{"class":48},[27,329,330],{"class":41},"     [",[27,332,186],{"class":185},[27,334,189],{"class":41},[27,336,337,340,342,345,347,350],{"class":29,"line":96},[27,338,339],{"class":48},"            escalate:",[27,341,197],{"class":41},[27,343,344],{"class":185},"\".\u002Fsecrets\u002F**\"",[27,346,203],{"class":41},[27,348,349],{"class":185},"\".\u002F.ssh\u002F**\"",[27,351,189],{"class":41},[27,353,354],{"class":29,"line":112},[27,355,236],{"class":41},[27,357,358],{"class":29,"line":233},[27,359,242],{"class":41},[27,361,362],{"class":29,"line":239},[27,363,248],{"class":41},[13,365,366,367,372],{},"See ",[268,368,370],{"href":369},"\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Fescalate",[24,371,290],{}," for the programmatic escalation\nfunction.",[374,375,376],"style",{},"html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}",{"title":22,"searchDepth":45,"depth":45,"links":378},[379,380],{"id":262,"depth":45,"text":263},{"id":290,"depth":45,"text":290},"md",{},true,"\u002Fdocs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Ffs",{"title":5,"description":15},"docs\u002Fv2\u002Fapi\u002Fconfig\u002Fpolicy\u002Ffs","L1PytRa5qsDUHW4-xHk-u1yz7bURPGd5k0fdLDylB7U",1786529563283]