{"record":{"id":"3c042ecb5b231ac5","repo":"tauri-apps/tauri","slug":"permission-file-not-found-please-build-your-appli","errorCode":null,"errorMessage":"permission file not found, please build your application once first","messagePattern":"permission file not found, please build your application once first","errorType":"validation","errorClass":"Error::GenericError","httpStatus":null,"severity":"error","filePath":"crates/tauri-cli/src/acl/permission/ls.rs","lineNumber":156,"sourceCode":"                  .deny\n                  .iter()\n                  .map(|c| c.red().to_string())\n                  .collect::<Vec<_>>()\n                  .join(\", \")\n              )\n            },\n          ));\n        }\n      }\n\n      if !permissions.is_empty() {\n        println!(\"{}\\n\", permissions.join(\"\\n\\n\"));\n      }\n    }\n\n    Ok(())\n  } else {\n    crate::error::bail!(\"permission file not found, please build your application once first\")\n  }\n}\n","sourceCodeStart":138,"sourceCodeEnd":159,"githubUrl":"https://github.com/tauri-apps/tauri/blob/52e4b6e71d8632a7e648f866c442e287ecddee34/crates/tauri-cli/src/acl/permission/ls.rs#L138-L159","documentation":"`tauri permission ls` reads the ACL manifest snapshot at `src-tauri/gen/schemas/acl-manifests.json`, which the Tauri build script generates when the app compiles. If that file does not exist, the CLI has no permission data to list and tells you to build once first.","triggerScenarios":"Running `tauri permission ls` in a freshly cloned or freshly scaffolded project that has never been compiled with `tauri dev`/`tauri build`; or after deleting/ignoring the `gen/schemas` output directory.","commonSituations":"New contributors cloning a repo where `src-tauri/gen` is gitignored (it is generated output); inspecting permissions before the first build; CI pipelines that try to audit permissions without a prior compile step.","solutions":["Run `tauri dev` or `tauri build` once so the build script emits `gen/schemas/acl-manifests.json`, then rerun `tauri permission ls`","If a build was already done, verify `src-tauri/gen/schemas/acl-manifests.json` exists and you are running the command from the project root/src-tauri so paths resolve","In CI, add a compile step (e.g. `cargo build` in src-tauri) before any `tauri permission ls` step"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# ensure the generated ACL manifest exists before listing permissions\nMANIFEST=src-tauri/gen/schemas/acl-manifests.json\n[ -f \"$MANIFEST\" ] || cargo tauri build --debug >/dev/null   # or `tauri dev` once\ntauri permission ls","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Compile once (`tauri dev` or `tauri build`) in onboarding steps before permission inspection","Do not gitignore-then-delete `src-tauri/gen/` if your workflow lists permissions; treat it as build output to regenerate, not preserve","In CI, run a cargo build step before `tauri permission ls`"],"tags":["tauri-cli","acl","permissions","build-artifact","codegen"],"backgroundTag":"missing-build-artifact","analyzedSha":"52e4b6e71d8632a7e648f866c442e287ecddee34","analyzedAt":"2026-08-20T13:59:20.734Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}