[{"data":1,"prerenderedAt":18},["ShallowReactive",2],{"doc:en:plugins\u002Fpermissions":3},{"title":4,"lede":5,"html":6,"headings":7},"Permissions","What a plugin asks for in its manifest, what each request opens to it, and what Escouade enforces or only shows. The install window says them in words, the strongest first.","\u003Ch2 id=\"each-permission\">Each permission\u003C\u002Fh2>\n\u003Cdiv class=\"table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>In the manifest\u003C\u002Fth>\n\u003Cth>What it opens\u003C\u002Fth>\n\u003Cth>What Escouade enforces\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">run.js\u003C\u002Fcode>, \u003Ccode class=\"key\">run.wasm\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A program in JS, TypeScript or Rust, inside the app, in WASM.\u003C\u002Ftd>\n\u003Ctd>All of it: 64 MB of memory, delays, and nothing beyond what it declares here: no network, no file, no program.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">run.command\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A program started in a process, with your rights: it can read your files, start other programs, connect anywhere. The store publishes none: it only comes from a folder or a git repository.\u003C\u002Ftd>\n\u003Ctd>Nothing beyond its other permissions: Escouade starts it, stops it with everything it started, caps its memory at 1 GB, but does not lock it in.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.decide\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Allowing or denying what your agents ask for, before you.\u003C\u002Ftd>\n\u003Ctd>An answer within 500 ms, else the request comes to you; a denial wins; each decision is in the journal. Never given by a project.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.commands\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The programs of your computer it can run, line by line.\u003C\u002Ftd>\n\u003Ctd>Nothing else runs, without a shell, and each run goes to the journal. But the program it runs has your rights.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.files\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The folders it reads or writes: its own, a folder of its own, your agents’.\u003C\u002Ftd>\n\u003Ctd>A closed list of roots, resolved by Escouade, links followed, never a private project. Each write goes to the journal.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">limits\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>More time or bytes for a call.\u003C\u002Ftd>\n\u003Ctd>Capped by Escouade: 120 s, 32 MB, 4 MB for a file.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.events\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The facts it receives: a ticket that changes columns, an agent waiting…\u003C\u002Ftd>\n\u003Ctd>A fact outside the list is never sent to it.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.network\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The hosts it connects to, the instances you give it (\u003Ccode class=\"key\">{account}\u003C\u002Fcode>), a harness’s local server (\u003Ccode class=\"key\">local:shared\u003C\u002Fcode>).\u003C\u002Ftd>\n\u003Ctd>Enforced for a program in WASM and for webhooks: nothing else goes out. Only shown for a \u003Ccode class=\"key\">run.command\u003C\u002Fcode> program, whose network Escouade does not filter.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode class=\"key\">permissions.secrets\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The secrets it keeps in the system’s keychain, under a name of its own.\u003C\u002Ftd>\n\u003Ctd>It gets only those of its list, never another plugin’s, an account’s or a harness’s; they are masked in its journal.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>For each capability, what it allows, what Escouade refuses and what the window says: \u003Ca href=\"\u002Fen\u002Fdocs\u002Fplugins\u002Fcapabilities\u002F\">the host’s capabilities\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>The extension points add their own lines to the window: a harness says the program its agents will run, a theme where to find it.\u003C\u002Fp>\n\u003Ch2 id=\"what-stays-in-your-hands\">What stays in your hands\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Taking a permission back\u003C\u002Fstrong>: the Permissions tab of its page, one switch per permission. Its program starts again without it (see \u003Ca href=\"\u002Fen\u002Fdocs\u002Fplugins\u002Finstaller\u002F#taking-a-permission-back\">installing a plugin\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Switching it off for a project\u003C\u002Fstrong>: the Projects tab. A private project is off from the start for any plugin you installed.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>An update that asks for more\u003C\u002Fstrong> asks for your consent again, and the window marks each extra permission “new”.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"callout warning\">\u003Cp class=\"callout-title\">Warning\u003C\u002Fp>\u003Cp>A \u003Ccode class=\"key\">run.command\u003C\u002Fcode> program has your rights. Even switched off for a private project, it could read its files on the disk: Escouade sends it nothing of that project, but cannot stop it. Install such a program only from an author you trust, or a version “Verified by Escouade”.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003Ch2 id=\"for-the-author\">For the author\u003C\u002Fh2>\n\u003Cp>Ask for as little as you can: each extra permission is one more line in the window, and one more reason for the review to refuse it (\u003Ca href=\"\u002Fen\u002Fdocs\u002Fplugins\u002Fsecurity\u002F\">plugin security\u003C\u002Fa>). A plugin is written as \u003Ccode class=\"key\">run.js\u003C\u002Fcode> or \u003Ccode class=\"key\">run.wasm\u003C\u002Fcode>: the store takes nothing else.\u003C\u002Fp>\n",[8,12,15],{"id":9,"text":10,"depth":11},"each-permission","Each permission",2,{"id":13,"text":14,"depth":11},"what-stays-in-your-hands","What stays in your hands",{"id":16,"text":17,"depth":11},"for-the-author","For the author",1793889382059]