Tauri config security
Skill Xopoko/plug-n-skills/plugins/tauri/skills/tauri-config-security
Configure or review Tauri 2 tauri.conf files, capabilities, permissions, CSP, scoped filesystem/network/shell access, window labels, plugin permissions, and security-sensitive frontend API exposure.From its SKILL.md
npx -y skills add Xopoko/plug-n-skills --skill tauri-config-securityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.9 KB, 668 tokens by cl100k_base, as published. Nobody here has run it
Tauri Config And Security
Bundled commands use $PLUGIN_ROOT ($env:PLUGIN_ROOT in PowerShell; same path suffix) for the plugin root. Set it once: use the host's plugin-root variable when defined (Claude Code: PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT"), otherwise the absolute path of this plugin's root directory.
Use this skill when changing tauri.conf.*, src-tauri/capabilities/*,
permissions, CSP, plugin access, or any frontend-callable native API.
Security Baseline
- Every frontend-accessible native API needs an explicit permission story.
- Grant the minimum permission to the minimum window/webview label.
- Scope filesystem, shell, HTTP, opener, deep-link, and sidecar access.
- Never add broad
$HOME/**, unrestricted shell, or unbounded network access as a convenience fix. - Do not print, move, commit, or invent signing keys, tokens,
.envvalues, cookies, Keychain data, or updater private keys.
Files To Inspect
python3 "$PLUGIN_ROOT/scripts/tauri_project_probe.py" .
Then inspect:
src-tauri/tauri.conf.json,.json5, or.toml;- platform configs such as
tauri.macos.conf.json,tauri.windows.conf.json,tauri.linux.conf.json,tauri.android.conf.json,tauri.ios.conf.json; src-tauri/capabilities/*.jsonor*.toml;src-tauri/Cargo.toml;- Rust window creation labels and plugin registration.
Capability Pattern
Prefer file-based capabilities under src-tauri/capabilities/:
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-window",
"description": "Main window permissions",
"windows": ["main"],
"permissions": [
"core:path:default",
"core:event:default",
"core:window:default",
{
"identifier": "fs:allow-exists",
"allow": [{ "path": "$APPDATA/*" }]
}
]
}
If app.security.capabilities is set in config, keep it synchronized with
capability identifiers. Window labels are case-sensitive and are not titles.
Review Checklist
- Are
core:*permissions namespaced correctly for Tauri 2? - Does each window have only the permissions it needs?
- Are remote URLs, filesystem scopes, and shell commands scoped?
- Are plugin permissions registered in capabilities after adding a plugin?
- Does CSP allow only required script, style, image, asset, IPC, and network sources?
- Did a build/runtime error get "fixed" by adding permissions that are too broad? If so, replace with a narrower permission or command.
Verification
Run schema/build checks available in the project. At minimum, use:
cargo check --manifest-path src-tauri/Cargo.toml
Then run the local Tauri dev/build command if the changed permission affects runtime frontend calls.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.