[{"data":1,"prerenderedAt":756},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fpermissions":116,"\u002Fguides\u002Fpermissions-surround":751},[4,27,61,82,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Sessions and store","\u002Fguides\u002Fsessions","2.guides\u002F1.sessions",{"title":38,"path":39,"stem":40},"Vault and procedures","\u002Fguides\u002Fvault","2.guides\u002F2.vault",{"title":42,"path":43,"stem":44},"Password accounts","\u002Fguides\u002Fpasswords","2.guides\u002F3.passwords",{"title":46,"path":47,"stem":48},"Rust backend","\u002Fguides\u002Frust","2.guides\u002F4.rust",{"title":50,"path":51,"stem":52},"Security notes","\u002Fguides\u002Fsecurity","2.guides\u002F5.security",{"title":54,"path":55,"stem":56},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F6.permissions",{"title":58,"path":59,"stem":60},"Coming from Stronghold","\u002Fguides\u002Fstronghold","2.guides\u002F7.stronghold",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[67,71,75,79],{"title":68,"path":69,"stem":70},"JavaScript API","\u002Freference\u002Fjavascript-api","3.reference\u002F1.javascript-api",{"title":72,"path":73,"stem":74},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":76,"path":77,"stem":78},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":54,"path":80,"stem":81},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":83,"icon":84,"path":85,"stem":86,"children":87,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[88,92,96,100,104,108],{"title":89,"path":90,"stem":91},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":93,"path":94,"stem":95},"macOS","\u002Fplatforms\u002Fmacos","4.platforms\u002F2.macos",{"title":97,"path":98,"stem":99},"Windows","\u002Fplatforms\u002Fwindows","4.platforms\u002F3.windows",{"title":101,"path":102,"stem":103},"Linux","\u002Fplatforms\u002Flinux","4.platforms\u002F4.linux",{"title":105,"path":106,"stem":107},"Android","\u002Fplatforms\u002Fandroid","4.platforms\u002F5.android",{"title":109,"path":110,"stem":111},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F6.ios",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":54,"body":118,"description":744,"extension":745,"generated":26,"links":746,"meta":747,"navigation":748,"path":55,"seo":749,"stem":56,"__hash__":750},"docs\u002F2.guides\u002F6.permissions.md",{"type":119,"value":120,"toc":739},"minimark",[121,143,148,159,270,277,281,284,391,394,505,519,523,726,735],[122,123,124,125,129,130,133,134,137,138,142],"p",{},"Every command has an ",[126,127,128],"code",{},"allow-*"," and a ",[126,131,132],{},"deny-*"," permission with the prefix ",[126,135,136],{},"keyring-store:",". The full\nlist is on the ",[139,140,141],"a",{"href":80},"generated permissions page",".",[144,145,147],"h2",{"id":146},"default-set","Default set",[122,149,150,153,154,158],{},[126,151,152],{},"keyring-store:default"," allows ",[155,156,157],"strong",{},"every"," command:",[160,161,167],"pre",{"className":162,"code":163,"filename":164,"language":165,"meta":166,"style":166},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"identifier\": \"default\",\n  \"windows\": [\"main\"],\n  \"permissions\": [\"core:default\", \"keyring-store:default\"]\n}\n","src-tauri\u002Fcapabilities\u002Fdefault.json","json","",[126,168,169,178,206,231,264],{"__ignoreMap":166},[170,171,174],"span",{"class":172,"line":173},"line",1,[170,175,177],{"class":176},"sMK4o","{\n",[170,179,181,184,188,191,194,197,201,203],{"class":172,"line":180},2,[170,182,183],{"class":176},"  \"",[170,185,187],{"class":186},"spNyl","identifier",[170,189,190],{"class":176},"\"",[170,192,193],{"class":176},":",[170,195,196],{"class":176}," \"",[170,198,200],{"class":199},"sfazB","default",[170,202,190],{"class":176},[170,204,205],{"class":176},",\n",[170,207,209,211,214,216,218,221,223,226,228],{"class":172,"line":208},3,[170,210,183],{"class":176},[170,212,213],{"class":186},"windows",[170,215,190],{"class":176},[170,217,193],{"class":176},[170,219,220],{"class":176}," [",[170,222,190],{"class":176},[170,224,225],{"class":199},"main",[170,227,190],{"class":176},[170,229,230],{"class":176},"],\n",[170,232,234,236,239,241,243,245,247,250,252,255,257,259,261],{"class":172,"line":233},4,[170,235,183],{"class":176},[170,237,238],{"class":186},"permissions",[170,240,190],{"class":176},[170,242,193],{"class":176},[170,244,220],{"class":176},[170,246,190],{"class":176},[170,248,249],{"class":199},"core:default",[170,251,190],{"class":176},[170,253,254],{"class":176},",",[170,256,196],{"class":176},[170,258,152],{"class":199},[170,260,190],{"class":176},[170,262,263],{"class":176},"]\n",[170,265,267],{"class":172,"line":266},5,[170,268,269],{"class":176},"}\n",[122,271,272,273,276],{},"A window with ",[126,274,275],{},"allow-get-passwords"," can read every password account under your service; the export\ncommands add nothing beyond that. Give the plugin only to windows that load your own code, never remote\ncontent.",[144,278,280],{"id":279},"narrow-sets","Narrow sets",[122,282,283],{},"Pick only the commands a window calls. A window that only signs with a vault key:",[160,285,287],{"className":162,"code":286,"language":165,"meta":166,"style":166},"{\n  \"identifier\": \"signer\",\n  \"windows\": [\"signer\"],\n  \"permissions\": [\n    \"keyring-store:allow-initialize\",\n    \"keyring-store:allow-load-client\",\n    \"keyring-store:allow-execute-procedure\"\n  ]\n}\n",[126,288,289,293,312,332,345,357,369,380,386],{"__ignoreMap":166},[170,290,291],{"class":172,"line":173},[170,292,177],{"class":176},[170,294,295,297,299,301,303,305,308,310],{"class":172,"line":180},[170,296,183],{"class":176},[170,298,187],{"class":186},[170,300,190],{"class":176},[170,302,193],{"class":176},[170,304,196],{"class":176},[170,306,307],{"class":199},"signer",[170,309,190],{"class":176},[170,311,205],{"class":176},[170,313,314,316,318,320,322,324,326,328,330],{"class":172,"line":208},[170,315,183],{"class":176},[170,317,213],{"class":186},[170,319,190],{"class":176},[170,321,193],{"class":176},[170,323,220],{"class":176},[170,325,190],{"class":176},[170,327,307],{"class":199},[170,329,190],{"class":176},[170,331,230],{"class":176},[170,333,334,336,338,340,342],{"class":172,"line":233},[170,335,183],{"class":176},[170,337,238],{"class":186},[170,339,190],{"class":176},[170,341,193],{"class":176},[170,343,344],{"class":176}," [\n",[170,346,347,350,353,355],{"class":172,"line":266},[170,348,349],{"class":176},"    \"",[170,351,352],{"class":199},"keyring-store:allow-initialize",[170,354,190],{"class":176},[170,356,205],{"class":176},[170,358,360,362,365,367],{"class":172,"line":359},6,[170,361,349],{"class":176},[170,363,364],{"class":199},"keyring-store:allow-load-client",[170,366,190],{"class":176},[170,368,205],{"class":176},[170,370,372,374,377],{"class":172,"line":371},7,[170,373,349],{"class":176},[170,375,376],{"class":199},"keyring-store:allow-execute-procedure",[170,378,379],{"class":176},"\"\n",[170,381,383],{"class":172,"line":382},8,[170,384,385],{"class":176},"  ]\n",[170,387,389],{"class":172,"line":388},9,[170,390,269],{"class":176},[122,392,393],{},"A window that only reads and writes its own tokens:",[160,395,397],{"className":162,"code":396,"language":165,"meta":166,"style":166},"{\n  \"identifier\": \"tokens\",\n  \"windows\": [\"main\"],\n  \"permissions\": [\n    \"keyring-store:allow-get-passwords\",\n    \"keyring-store:allow-set-passwords\",\n    \"keyring-store:allow-delete-passwords\",\n    \"keyring-store:allow-password-exists\"\n  ]\n}\n",[126,398,399,403,422,442,454,465,476,487,496,500],{"__ignoreMap":166},[170,400,401],{"class":172,"line":173},[170,402,177],{"class":176},[170,404,405,407,409,411,413,415,418,420],{"class":172,"line":180},[170,406,183],{"class":176},[170,408,187],{"class":186},[170,410,190],{"class":176},[170,412,193],{"class":176},[170,414,196],{"class":176},[170,416,417],{"class":199},"tokens",[170,419,190],{"class":176},[170,421,205],{"class":176},[170,423,424,426,428,430,432,434,436,438,440],{"class":172,"line":208},[170,425,183],{"class":176},[170,427,213],{"class":186},[170,429,190],{"class":176},[170,431,193],{"class":176},[170,433,220],{"class":176},[170,435,190],{"class":176},[170,437,225],{"class":199},[170,439,190],{"class":176},[170,441,230],{"class":176},[170,443,444,446,448,450,452],{"class":172,"line":233},[170,445,183],{"class":176},[170,447,238],{"class":186},[170,449,190],{"class":176},[170,451,193],{"class":176},[170,453,344],{"class":176},[170,455,456,458,461,463],{"class":172,"line":266},[170,457,349],{"class":176},[170,459,460],{"class":199},"keyring-store:allow-get-passwords",[170,462,190],{"class":176},[170,464,205],{"class":176},[170,466,467,469,472,474],{"class":172,"line":359},[170,468,349],{"class":176},[170,470,471],{"class":199},"keyring-store:allow-set-passwords",[170,473,190],{"class":176},[170,475,205],{"class":176},[170,477,478,480,483,485],{"class":172,"line":371},[170,479,349],{"class":176},[170,481,482],{"class":199},"keyring-store:allow-delete-passwords",[170,484,190],{"class":176},[170,486,205],{"class":176},[170,488,489,491,494],{"class":172,"line":382},[170,490,349],{"class":176},[170,492,493],{"class":199},"keyring-store:allow-password-exists",[170,495,379],{"class":176},[170,497,498],{"class":172,"line":388},[170,499,385],{"class":176},[170,501,503],{"class":172,"line":502},10,[170,504,269],{"class":176},[122,506,507,508,510,511,518],{},"Permissions select commands, not accounts: ",[126,509,275],{}," reads any account (except the\nreserved ",[139,512,514,517],{"href":513},"\u002Fguides\u002Fpasswords#reserved-accounts",[126,515,516],{},"kp:"," accounts","). If windows must not see each other's\nsecrets, give only one of them the password commands and route the rest through your own Rust commands.",[144,520,522],{"id":521},"which-method-needs-which-command","Which method needs which command",[524,525,526,539],"table",{},[527,528,529],"thead",{},[530,531,532,536],"tr",{},[533,534,535],"th",{},"JavaScript",[533,537,538],{},"Command",[540,541,542,555,567,579,598,622,639,649,679,697,715],"tbody",{},[530,543,544,550],{},[545,546,547],"td",{},[126,548,549],{},"KeyringSession.load",[545,551,552],{},[126,553,554],{},"initialize",[530,556,557,562],{},[545,558,559],{},[126,560,561],{},"session.unload",[545,563,564],{},[126,565,566],{},"destroy",[530,568,569,574],{},[545,570,571],{},[126,572,573],{},"session.save",[545,575,576],{},[126,577,578],{},"save",[530,580,581,590],{},[545,582,583,586,587],{},[126,584,585],{},"session.createClient"," \u002F ",[126,588,589],{},"loadClient",[545,591,592,586,595],{},[126,593,594],{},"create_client",[126,596,597],{},"load_client",[530,599,600,611],{},[545,601,602,586,605,586,608],{},[126,603,604],{},"store.get",[126,606,607],{},"insert",[126,609,610],{},"remove",[545,612,613,586,616,586,619],{},[126,614,615],{},"get_store_record",[126,617,618],{},"save_store_record",[126,620,621],{},"remove_store_record",[530,623,624,631],{},[545,625,626,586,629],{},[126,627,628],{},"vault.insert",[126,630,610],{},[545,632,633,586,636],{},[126,634,635],{},"save_secret",[126,637,638],{},"remove_secret",[530,640,641,644],{},[545,642,643],{},"vault procedures",[545,645,646],{},[126,647,648],{},"execute_procedure",[530,650,651,665],{},[545,652,653,586,656,586,659,586,662],{},[126,654,655],{},"getPasswords",[126,657,658],{},"setPasswords",[126,660,661],{},"deletePasswords",[126,663,664],{},"passwordExists",[545,666,667,586,670,586,673,586,676],{},[126,668,669],{},"get_passwords",[126,671,672],{},"set_passwords",[126,674,675],{},"delete_passwords",[126,677,678],{},"password_exists",[530,680,681,689],{},[545,682,683,586,686],{},[126,684,685],{},"exportPasswordsPlain",[126,687,688],{},"importPasswordsPlain",[545,690,691,586,694],{},[126,692,693],{},"export_passwords_plain",[126,695,696],{},"import_passwords_plain",[530,698,699,707],{},[545,700,701,586,704],{},[126,702,703],{},"exportPasswordsEncrypted",[126,705,706],{},"importPasswordsEncrypted",[545,708,709,586,712],{},[126,710,711],{},"export_passwords_encrypted",[126,713,714],{},"import_passwords_encrypted",[530,716,717,722],{},[545,718,719],{},[126,720,721],{},"ping",[545,723,724],{},[126,725,721],{},[122,727,728,729,731,732,142],{},"Permission identifiers use dashes: command ",[126,730,615],{}," is ",[126,733,734],{},"keyring-store:allow-get-store-record",[736,737,738],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":166,"searchDepth":180,"depth":208,"links":740},[741,742,743],{"id":146,"depth":180,"text":147},{"id":279,"depth":180,"text":280},{"id":521,"depth":180,"text":522},"Allow the plugin's commands in a capability, and give each window only what it needs.","md",null,{},true,{"title":54,"description":744},"zD-U_M3oiz5URQ4H3FMy5OQgVLo3HJuFQmoq2RGC730",[752,754],{"title":50,"path":51,"stem":52,"description":753,"children":-1},"What protects the secrets, what the webview can reach, and how to handle passwords, mnemonics and backups.",{"title":58,"path":59,"stem":60,"description":755,"children":-1},"How the API maps to tauri-plugin-stronghold, what behaves differently, and how to move existing data.",1794215489437]