What happens: Setting any non-empty persistent_apk_packages (e.g. ["tmux"]) makes the add-on fail to start:
[21:29:39] INFO: Auto-installing system packages from config...
jq: parse error: Invalid numeric literal at line 2, column 0
s6-rc: info: service legacy-services: stopping
Root cause: In run.sh auto_install_packages(), bashio::config 'persistent_apk_packages' returns newline-separated plain values (bashio unpacks list options), but the script pipes this into jq -r '.[]' expecting a JSON array. jq fails on the bare package name; with errexit/pipefail the whole run script exits. Same pattern affects persistent_pip_packages.
Suggested fix: drop the jq parse and iterate bashio's output directly:
if bashio::config.has_value 'persistent_apk_packages'; then
bashio::log.info "Auto-installing system packages from config..."
for pkg in $(bashio::config 'persistent_apk_packages'); do
bashio::log.info " Installing: $pkg"
/usr/local/bin/persist-install "$pkg" || bashio::log.warning "Failed to install: $pkg"
done
fi
(same change for the pip branch, keeping the tr '\n' ' ' collection step unnecessary)
Environment: aarch64 (RPi), HAOS, add-on with Claude Code 2.1.199. Workaround: leave the option empty and run persist-install manually — that path works because it doesn't go through the config parser.
What happens: Setting any non-empty persistent_apk_packages (e.g. ["tmux"]) makes the add-on fail to start:
Root cause: In run.sh auto_install_packages(), bashio::config 'persistent_apk_packages' returns newline-separated plain values (bashio unpacks list options), but the script pipes this into jq -r '.[]' expecting a JSON array. jq fails on the bare package name; with errexit/pipefail the whole run script exits. Same pattern affects persistent_pip_packages.
Suggested fix: drop the jq parse and iterate bashio's output directly:
(same change for the pip branch, keeping the tr '\n' ' ' collection step unnecessary)
Environment: aarch64 (RPi), HAOS, add-on with Claude Code 2.1.199. Workaround: leave the option empty and run persist-install manually — that path works because it doesn't go through the config parser.