feat: add custom execution command settings for CLI providers#686
Conversation
- Add ProviderCustomConfig interface for storing custom CLI flags - Add getProviderCustomConfig and getAllProviderCustomConfigs functions - Add updateProviderCustomConfig function for CRUD operations - Return shallow/deep copies from getter functions to prevent cache corruption - Normalize custom config values in normalizeSettings function
- Add providers:getCustomConfig handler to retrieve single config - Add providers:getAllCustomConfigs handler to retrieve all configs - Add providers:updateCustomConfig handler to update/delete config - Expose APIs to renderer via preload contextBridge
- Add ProviderCustomConfig and ProviderCustomConfigs types - Add type definitions for getProviderCustomConfig - Add type definitions for getAllProviderCustomConfigs - Add type definitions for updateProviderCustomConfig
- Add parseShellArgs function for proper shell argument parsing - Support single quotes, double quotes, and escape characters - Apply custom provider config overrides at command execution time - Use parseShellArgs for resumeFlag, defaultArgs, autoApproveFlag, initialPromptFlag
- Add CustomCommandModal component with granular flag configuration - Add Escape key handler for modal dismissal - Add settings button to detected providers in CliProvidersList - Add command preview, reset to defaults, and save functionality - Improve accessibility with aria-label on tooltip buttons
|
@Devdha is attempting to deploy a commit to the General Action Team on Vercel. A member of the Team first needs to authorize it. |
|
Imho thats not good UX. I mean, yes an "advanced mode" would be beneficial, but forcing the cli onto every user is a bad decision imho. |
|
Thanks for the feedback! I think there may be a misunderstanding. This PR doesn't force anything. the default behavior remains exactly the same. The customize icon only appears for users who want to customize. If you never click it, nothing changes. It's essentially an optional "advanced settings" panel hidden unless explicitly opened. |
Keep both providerConfigs (from PR) and terminal/defaultOpenInApp (from main). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Thank you! @Devdha |
|
@greptile pls review |
Greptile OverviewGreptile SummaryThis PR adds the ability to customize CLI execution commands for each provider in Settings > Connections, allowing users to override CLI paths, flags, and arguments. Key Changes
Issues Found
Confidence Score: 4/5
|
| Filename | Overview |
|---|---|
| src/main/settings.ts | Added ProviderCustomConfig type and CRUD functions with proper normalization and cache-safe getters |
| src/main/ipc/connectionsIpc.ts | Added IPC handlers for getting and updating provider custom configs with standard error handling |
| src/main/services/ptyManager.ts | Added parseShellArgs function and integrated custom config resolution into command construction; uses same escaping pattern as existing code |
| src/renderer/components/CustomCommandModal.tsx | New modal component with granular flag configuration, live preview, and reset functionality |
Sequence Diagram
sequenceDiagram
participant User
participant CliAgentsList
participant CustomCommandModal
participant IPC
participant Settings
participant PtyManager
User->>CliAgentsList: Click settings icon
CliAgentsList->>CustomCommandModal: Open modal with providerId
CustomCommandModal->>IPC: getProviderCustomConfig(providerId)
IPC->>Settings: getProviderCustomConfig(providerId)
Settings-->>IPC: config or undefined
IPC-->>CustomCommandModal: { success, config }
CustomCommandModal->>CustomCommandModal: Load form with config or defaults
User->>CustomCommandModal: Edit fields
CustomCommandModal->>CustomCommandModal: Update preview command
User->>CustomCommandModal: Click Save
CustomCommandModal->>IPC: updateProviderCustomConfig(providerId, config)
IPC->>Settings: updateProviderCustomConfig(providerId, config)
Settings->>Settings: Update settings.json
Settings-->>IPC: success
IPC-->>CustomCommandModal: { success }
CustomCommandModal->>CliAgentsList: Close modal
User->>CliAgentsList: Start agent task
CliAgentsList->>PtyManager: startPty(options)
PtyManager->>Settings: getProviderCustomConfig(providerId)
Settings-->>PtyManager: custom config
PtyManager->>PtyManager: parseShellArgs(customConfig.*)
PtyManager->>PtyManager: Resolve flags (custom overrides defaults)
PtyManager->>PtyManager: Build command with resolved flags
PtyManager-->>CliAgentsList: PTY with custom command
…seShellArgs address greptile review feedback (greploop iteration 1) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Issue #685
Summary
Add the ability to customize CLI execution commands for each provider in Settings > Connections. Users can now override:
--yolofor Codex instead of--full-auto)This addresses #659 and similar requests for custom CLI flags.
Changes
src/main/settings.ts- AddProviderCustomConfigtype and CRUD functions with cache-safe getterssrc/main/ipc/connectionsIpc.ts- Add IPC handlers for get/update custom configssrc/main/preload.ts- Expose APIs to renderersrc/main/services/ptyManager.ts- AddparseShellArgs()for proper shell-style argument parsing (supports quoted strings)src/renderer/components/CustomCommandModal.tsx- New modal with granular flag configuration and live previewsrc/renderer/components/CliProvidersList.tsx- Add settings gear icon for detected providerssrc/renderer/types/electron-api.d.ts- TypeScript definitionsScreenshots