From f7ac2f35fe3a8877ac6bcda4b6a47535106c5fa4 Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Thu, 2 Apr 2026 11:08:30 +0000 Subject: [PATCH] fix(kugetsu): call fix_session_permissions before forking - Call fix_session_permissions in cmd_start before forking to ensure base session has correct permissions for external_directory access - Add debug logging to show forked session's directory and permissions after creation to help diagnose permission inheritance issues --- skills/kugetsu/scripts/kugetsu | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/skills/kugetsu/scripts/kugetsu b/skills/kugetsu/scripts/kugetsu index bdba5de..19c1147 100755 --- a/skills/kugetsu/scripts/kugetsu +++ b/skills/kugetsu/scripts/kugetsu @@ -1246,6 +1246,8 @@ cmd_start() { local fork_log="$SESSIONS_DIR/$session_file.fork.log" local opencode_db="${OPENCODE_DB:-$HOME/.local/share/opencode/opencode.db}" + fix_session_permissions + if [ "$DEBUG_MODE" = true ]; then (cd "$worktree_path" && opencode run "$message" --fork --session "$base_session_id" 2>&1) | tee "$fork_log" & else @@ -1317,6 +1319,20 @@ for row in cursor.fetchall(): exit 1 fi + if [ "$DEBUG_MODE" = true ]; then + echo "[DEBUG] Forked session permissions check:" + python3 -c " +import sqlite3 +conn = sqlite3.connect('$opencode_db') +cursor = conn.cursor() +cursor.execute(\"SELECT id, directory, permission FROM session WHERE id = '$new_session_id'\") +for row in cursor.fetchall(): + print(' ID:', row[0]) + print(' Directory:', row[1]) + print(' Permission:', row[2]) +" 2>/dev/null || echo " (failed to query DB)" + fi + printf '{"type": "forked", "issue_ref": "%s", "opencode_session_id": "%s", "worktree_path": "%s", "created_at": "%s", "state": "idle"}\n' \ "$issue_ref" "$new_session_id" "$worktree_path" "$(date -Iseconds)" > "$SESSIONS_DIR/$session_file"