From 126a8f906945245450f96ee129fcdcaaeddfcdd5 Mon Sep 17 00:00:00 2001 From: Robert Koller Date: Mon, 16 Mar 2026 05:08:27 +0000 Subject: [PATCH] fix: escape WORKDIR and LOG_FILE in bash -c invocations Paths containing single quotes would break the generated bash -c script. Use printf '%q' to safely escape both variables, matching the existing PROMPT escaping approach. --- skills/claude-codex-delegation/scripts/delegate.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/skills/claude-codex-delegation/scripts/delegate.sh b/skills/claude-codex-delegation/scripts/delegate.sh index 99d0a4cb883..f73d3a38a6a 100755 --- a/skills/claude-codex-delegation/scripts/delegate.sh +++ b/skills/claude-codex-delegation/scripts/delegate.sh @@ -170,11 +170,14 @@ run_delegation() { echo "Delegating to $AGENT in $WORKDIR (timeout: ${TIMEOUT}s)" echo "Log: $LOG_FILE" +ESCAPED_WORKDIR="$(printf '%q' "$WORKDIR")" +ESCAPED_LOG="$(printf '%q' "$LOG_FILE")" + if $BACKGROUND; then ( timeout "$TIMEOUT" bash -c "$(declare -f run_delegation build_claude_cmd build_codex_cmd); \ AGENT='$AGENT' PROMPT='$(printf '%s' "$PROMPT" | sed "s/'/'\\\\''/g")' \ - WORKDIR='$WORKDIR' LOG_FILE='$LOG_FILE' FULL_AUTO=$FULL_AUTO \ + WORKDIR=$ESCAPED_WORKDIR LOG_FILE=$ESCAPED_LOG FULL_AUTO=$FULL_AUTO \ run_delegation" EXIT_CODE=$? echo "" @@ -186,7 +189,7 @@ if $BACKGROUND; then else timeout "$TIMEOUT" bash -c "$(declare -f run_delegation build_claude_cmd build_codex_cmd); \ AGENT='$AGENT' PROMPT='$(printf '%s' "$PROMPT" | sed "s/'/'\\\\''/g")' \ - WORKDIR='$WORKDIR' LOG_FILE='$LOG_FILE' FULL_AUTO=$FULL_AUTO \ + WORKDIR=$ESCAPED_WORKDIR LOG_FILE=$ESCAPED_LOG FULL_AUTO=$FULL_AUTO \ run_delegation" EXIT_CODE=$? if [[ $EXIT_CODE -eq 0 ]]; then