Change:
Testing For this line, presumably there is only one AI action available. ! But I have no idea what that action is... and what will be executed when I open inline chat. It opens with : ! I think this should be more clear that this will happen as it's a bit jarring. Also will help here I think
Yes that's a very good point, if an action is auto-ran I will put the action title in the hover message. I am just wondering how that would work with localization since the hover message would be dynamic and would depend on the command inside of the menu? I guess I'll just write the following code in the localized string and prepend the action title with 'run':
We probably should turn off autorun when inline chat was invoked by clicking on the sparkle.
Is there a way to override the autorun from the code action?
I am working on changing the arguments if the command ID is . I will create a new args object but set autoSend to false, the other properties will be the same
So I have one PR to show the action title in the sparkle hover: And one PR which disables autoSend when invoking :

Discussion:
if (this.state.type !== LightBulbState.Type.Showing) { return; } <del> const updateAutoFixLightbulbTitle = () => { if (this._preferredKbLabel) { this.title = nls.localize('preferredcodeActionWithKb', "Show Code Actions. Preferred Quick Fix Available ({0})", this._preferredKbLabel); } }; const updateLightbulbTitle = () => { if (this._quickFixKbLabel) { this.title = nls.localize('codeActionWithKb', "Show Code Actions ({0})", this._quickFixKbLabel); } else { this.title = nls.localize('codeAction', "Show Code Actions"); } }; </del> let icon: ThemeIcon; <ins> let autoRun = false; </ins> const option = this._editor.getOption(EditorOption.lightbulb).experimental.showAiIcon; if (option === ShowAiIconMode.On || option === ShowAiIconMode.OnCode) { if (option === ShowAiIconMode.On && this.state.actions.allAIFixes) { icon = Codicon.sparkleFilled; if (this.state.actions.validActions.length === 1) { <del> if (this.state.actions.validActions[0].action.command?.id === `inlineChat.start`) { const keybinding = this._keybindingService.lookupKeybinding('inlineChat.start')?.getLabel() ?? undefined; this.title = keybinding ? nls.localize('codeActionStartInlineChatWithKb', 'Start Inline Chat ({0})', keybinding) : nls.localize('codeActionStartInlineChat', 'Start Inline Chat',); } else { this.title = nls.localize('codeActionTriggerAiAction', "Trigger AI Action"); } } else { updateLightbulbTitle(); </del> <ins> autoRun = true; </ins> } } else if (this.state.actions.hasAutoFix) { if (this.state.actions.hasAIFix) {

} else { icon = Codicon.lightbulbAutofix; } <del> updateAutoFixLightbulbTitle(); </del> } else if (this.state.actions.hasAIFix) { icon = Codicon.lightbulbSparkle; <del> updateLightbulbTitle(); </del> } else { icon = Codicon.lightBulb; <del> updateLightbulbTitle(); </del> } } else { if (this.state.actions.hasAutoFix) { icon = Codicon.lightbulbAutofix; <del> updateAutoFixLightbulbTitle(); </del> } else { icon = Codicon.lightBulb; <del> updateLightbulbTitle(); </del> } } <ins> this._updateLightbulbTitle(this.state.actions.hasAutoFix, autoRun); </ins> this._iconClasses = ThemeIcon.asClassNameArray(icon); this._domNode.classList.add(...this._iconClasses); } <ins> private _updateLightbulbTitle(autoFix: boolean, autoRun: boolean): void { if (this.state.type !== LightBulbState.Type.Showing) { return; } if (autoRun) { this.title = nls.localize('codeActionAutoRun', "Run: {0}", this.state.actions.validActions[0].action.title); } else if (autoFix && this._preferredKbLabel) { this.title = nls.localize('preferredcodeActionWithKb', "Show Code Actions. Preferred Quick Fix Available ({0})", this._preferredKbLabel); } else if (!autoFix && this._quickFixKbLabel) { this.title = nls.localize('codeActionWithKb', "Show Code Actions ({0})", this._quickFixKbLabel); } else if (!autoFix) { this.title = nls.localize('codeAction', "Show Code Actions"); } } </ins> private set title(value: string) { this._domNode.title = value; }