Skip to content

fix: harden child-process argv and whisper path passing - #90

Merged
undivisible merged 2 commits into
mainfrom
fix/child-process-hardening
Sep 16, 2026
Merged

undivisible merged 2 commits into
mainfrom
fix/child-process-hardening

Conversation

@undivisible

@undivisible undivisible commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

What

Closes leftover Jules injection/flag-confusion gaps without changing intended sh -c skill/test semantics.

Tests

Unit coverage for whisper argv construction and dynamic-tool -- placement. Full --all-features suite did not finish in the orb (RocksDB compile).

Review-only. Process-spawn / security boundary — do not auto-merge.


Note

Medium Risk
Touches security-sensitive process spawning and untrusted path/argument handling; changes are defensive but warrant careful review of argv ordering and env scrubbing on each spawn site.

Overview
Hardens several child-process spawn paths against injection and flag confusion without changing shell-based skill semantics elsewhere.

Telegram voice transcription now runs a fixed python3 -c Whisper script and passes the temp audio file only as sys.argv[1] (not embedded in the script), with kill_on_drop and child_proc::scrub on the Python process. A unit test locks in that behavior.

Dynamic tools (python3 / bash) insert -- before the script path so paths starting with - are not parsed as flags; execution is centralized via dynamic_tool_argv, with the same scrub/kill-on-drop treatment. Vibemania applies the same pattern: flags first, then -- plus the user goal.

The local Telegram message bridge logs bind/serve failures instead of panicking on unwrap.

New tests cover Whisper argv construction and dynamic-tool -- placement.

Reviewed by Cursor Bugbot for commit a63d4f0. Configure here.

@capy-ai

capy-ai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Capy couldn't review this pull request because Max's workspace is out of credits, add credits or enable auto-reload to resume automatic reviews.

Open in Capy

@cursor

cursor Bot commented Sep 16, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_826a458d-b09f-4a16-bad3-3a9ab68f7a7c)

@mergify

mergify Bot commented Sep 16, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

ampagent and others added 2 commits September 16, 2026 05:31
Pass the Telegram faster-whisper audio path as python argv[1] instead of
interpolating it into python -c. Put `--` before dynamic-tool scripts and
vibemania goals so a leading `-` cannot be a flag. Scrub secret env vars
from those children. Log local message-bridge bind failures instead of
unwrapping.

Co-authored-by: Max Carter <undivisible@vk.com>
Keep children from leaking if the parent task is cancelled after spawn.

Co-authored-by: Max Carter <undivisible@vk.com>
@undivisible
undivisible force-pushed the fix/child-process-hardening branch from a14d549 to a63d4f0 Compare September 16, 2026 05:32
@cursor

cursor Bot commented Sep 16, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_5aea07cd-8297-47c5-b752-dd588af5b193)

@undivisible
undivisible merged commit 4c99cef into main Sep 16, 2026
4 checks passed
@undivisible
undivisible deleted the fix/child-process-hardening branch September 16, 2026 05:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants