Skip to content

Commit f92ea90

Browse files
authored
fix(zsh): use _forge_exec_interactive for provider/model config set to fix API key input under ZLE (#2568)
1 parent aa2a050 commit f92ea90

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

shell-plugin/lib/actions/config.zsh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,11 @@ function _forge_action_provider() {
8585
# Extract the second field (provider ID) from the selected line
8686
# Format: "DisplayName provider_id host type status"
8787
local provider_id=$(echo "$selected" | awk '{print $2}')
88-
# Always use config set - it will handle authentication if needed
89-
_forge_exec config set provider "$provider_id"
88+
# Use _forge_exec_interactive because config-set may trigger
89+
# interactive authentication prompts (rustyline) when the provider
90+
# is not yet configured. Without /dev/tty redirection, ZLE's pipes
91+
# cause rustyline to see EOF and fail with "API key input cancelled".
92+
_forge_exec_interactive config set provider "$provider_id"
9093
fi
9194
}
9295

@@ -158,7 +161,7 @@ function _forge_action_model() {
158161
local current_provider
159162
current_provider=$(_forge_exec config get provider --porcelain 2>/dev/null)
160163
if [[ -n "$provider_display" && "$provider_display" != "$current_provider" ]]; then
161-
_forge_exec config set provider "$provider_id"
164+
_forge_exec_interactive config set provider "$provider_id"
162165
fi
163166

164167
_forge_exec config set model "$model_id"

0 commit comments

Comments
 (0)