From 5f738f1ef618a466821811004d08286a2428a527 Mon Sep 17 00:00:00 2001 From: Callan Barrett Date: Tue, 8 Sep 2026 13:39:03 +0800 Subject: [PATCH] docs: clarify custom launcher execution policy --- docs/features/custom-launchers.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/features/custom-launchers.md b/docs/features/custom-launchers.md index b60e625..f1ff36d 100644 --- a/docs/features/custom-launchers.md +++ b/docs/features/custom-launchers.md @@ -21,6 +21,10 @@ When Core cannot track the launched process, features that depend on active medi ## Creating a custom launcher +:::warning Only install launchers you trust +Custom launcher files can run programs and scripts on your device with the same permissions as Zaparoo Core. Their launch commands and configured controls do not need approval through `allow_execute`. Treat installing a shared launcher file like installing a script: check what it runs before copying it into your `launchers` folder. +::: + To start, open the `launchers` directory in the Core data folder. Check the page for your [platform](../platforms/index.mdx) if you're not sure where that folder is. Create a new file ending in `.toml`. This example uses `OpenEmuGB.toml`. The filename is not important, but launcher IDs are, so use a unique ID. @@ -150,7 +154,7 @@ lifecycle = "background" Define control actions that can be triggered on active media via [launcher controls](./launchers.md#launcher-controls). Values are [ZapScript](../zapscript/index.md) strings that run in a restricted control runtime. Media-launching, playlist, and nested `control` commands are blocked, but utility commands like `input.keyboard`, `execute`, `delay`, and `echo` are allowed. -The `execute` command in control scripts still requires a matching [`allow_execute`](../core/config.md#allow_execute) entry. +The `execute` command in configured control scripts does not require an [`allow_execute`](../core/config.md#allow_execute) entry, matching the launcher's own `execute` command. The same command sent directly from a token or the run API still requires the allowlist. Configured controls still respect `block_commands`, and remotely fetched ZapScript cannot bypass the execute restrictions. ```toml [[launchers.custom]]