Caveat verdict
kiwi-voice
Manages a local Python voice assistant service with user-configured providers and local Telegram-based security approval; behavior matches the stated voice assistant management purpose.
⚠ Flagged for review — coarse, uncorroborated signal, not a confirmed exploit. Review the config yourself before installing.
Automated static analysis — not a human review. Caveat flags capabilities, not confirmed intent, and can produce false positives. Disagree with this verdict? Use Dispute below.
Findings (18)
Possible hardcoded credential
README.md · code · token: "your-secret-token-here
HTTP request to bare IP address — common in malicious payloads
docs/deployment/reverse-proxy.md · code · http://127.0.0.1
References sudo — requests elevated privileges
docs/deployment/reverse-proxy.md · code · sudo
<script> tag in markdown — potential code injection
kiwi/api/server.py · prose · downgraded · <script>
Recursive delete from root or home — destructive command
kiwi/voice_security.py · prose · downgraded · rm -rf /
Uses eval() — can execute arbitrary code
runpod/qwen_tts/core/tokenizer_25hz/vq/whisper_encoder.py · prose · downgraded · eval(
Raw model control tokens — prompt injection via token manipulation
runpod/qwen_tts/inference/qwen3_tts_model.py · prose · downgraded · <|im_start|>
Opens WebSocket connection
CLAUDE.md · code · WebSocket
os.system/popen — direct OS command execution
kiwi/api/server.py · prose · downgraded · os.execv(
subprocess execution — runs system commands from Python
kiwi/hardware_aec.py · prose · downgraded · subprocess.run(
Instructs covert action — may act without user awareness
kiwi/locales/en.yaml · prose · downgraded · quietly
Accesses OpenClaw config/secrets directly
kiwi/openclaw_ws.py · prose · downgraded · ~/.openclaw/openclaw.json
Python aiohttp session — async network access
custom_components/kiwi_voice/config_flow.py · prose · downgraded · aiohttp.ClientSession
Python os.getenv — reads environment variable
kiwi/config_loader.py · prose · downgraded · os.getenv(
Python os.environ.get — reads environment variable
kiwi/config_loader.py · prose · downgraded · os.environ.get(
Python threading.Timer — deferred execution
kiwi/mixins/llm_callbacks.py · prose · downgraded · threading.Timer(
Python urllib.request — network access
kiwi/tts/kokoro.py · prose · downgraded · urllib.request
Popular HTTP library — network access
runpod/qwen_tts/core/tokenizer_12hz/modeling_qwen3_tts_tokenizer_v2.py · prose · downgraded · got
Why the tier is capped
Execution sink present in raw bytes (Hard Floor: class D). Final tier capped at Caution — cannot be lifted by any downgrade, example-payload opt-in, or allowlist.
Permissions & capabilities
No declared permissions — minimal attack surface.
Is this flag fair?
Thanks — recorded.