VS Code Chat and AI Cheat Sheet
Sidebar
Programming ยท VS Code Chat and AI Cheat Sheet
VS Code's built-in chat, agent mode and inline suggestions, plus the Claude Code extension: the settings to search for, what they do, and their defaults. Sheet 13 in the VS Code series. These settings change quickly between versions; this sheet was checked against VS Code 1.139.1 and Claude Code extension 2.1.285.
Chat: Getting Around
Ctrl+Alt+IOpen the Chat view (side bar)Ctrl+IInline chat: ask for an edit right where the cursor is@nameAddress a chat participant, e.g. @workspace or @terminal/commandSlash commands such as /explain, /fix, /tests, /clear#file #selection #codebaseAttach context to a question: a file, your selection, or a search of the projectAsk / Edit / AgentChat modes: answers only / edits you review / autonomous multi-step work with toolschat.newSession.defaultModeMode a new chat starts in (default empty, meaning the product default)Agent & Requests
chat.agent.enabledAllow agent mode (default true)chat.agent.maxRequestsHow many steps an agent may take before asking to continue (default 50)chat.permissions.defaultdefault (default), autoApprove, autopilot: how freely tools may runchat.checkpoints.enabledSnapshot your files at each request so you can restore (default true)chat.checkpoints.showFileChangesShow which files changed at each checkpoint (default false)chat.requestQueuing.defaultActionA message sent mid-response: steer (default) the current one, or queue itchat.saveBeforeSendSave open files before sending a request (default true)chat.restoreLastPanelSessionReopen the last conversation in the panel (default false)chat.defaultModelModel chosen for new chats (default empty: picked for you)Tool Approval & Safety
chat.tools.global.autoApprovetrue approves every tool call with no prompt (default false): use with great carechat.tools.edits.autoApproveFile patterns the agent may edit without asking (object of pattern: true/false)chat.tools.terminal.enableAutoApproveAllow terminal commands to be auto-approved by rule (default true)chat.tools.terminal.autoApproveCommands approved (true) or always blocked (false), e.g. { "git status": true }chat.tools.urls.autoApproveWeb addresses the agent may fetch without asking (a short documentation list by default)chat.tools.riskAssessment.enabledCheck tool calls for risk before running them (default true)chat.agent.sandbox.enabledoff (default) or on: run agent commands in a sandboxchat.agent.networkFilterFilter the agent's network access (default false)chat.agent.allowedNetworkDomains / deniedNetworkDomainsDomain lists for that filter (default [])Reviewing Edits
chat.editing.autoAcceptDelaySeconds before edits are accepted automatically; 0 (default) means neverchat.editing.openChangedFileInDiffEditorOpen changed files as diffs (default true)chat.editing.confirmEditRequestRemovalAsk before removing an edit request (default true)chat.editing.confirmEditRequestRetryAsk before retrying an edit request (default true)chat.editRequestsHow you edit an earlier message: inline (default), hover, input, nonechat.undoRequests.restoreInputPut the text back in the box when you undo a request (default true)chat.implicitContext.enabledAttach the active editor automatically: never, first, always (panel default always)chat.pasteAsAttachmentThresholdPasted text longer than this many characters becomes an attachment (default 10000)Appearance & Notifications
chat.fontSize / chat.fontFamilyText size and font in the chat (defaults 13 and the system default)chat.editor.fontSizeCode block size in chat (default 14; 12 on macOS)chat.editor.wordWrapWrap lines in code blocks: off (default) or onchat.math.enabledRender maths formulas in answers (default true)chat.tips.enabledShow tips in the Chat view (default true)chat.contextUsage.enabledShow how much of the model's context window is used (default true)chat.tools.todos.showWidgetShow the agent's to-do list while it works (default true)chat.notifyWindowOnResponseReceivedwindowNotFocused (default), off, always: alert when an answer arriveschat.notifyWindowOnConfirmationSame options, for when the agent needs your approvalchat.viewSessions.orientationSession list layout: sideBySide (default) or stackedchat.agentSessions.showExternalrecent (default), none, last24Hours, last7Days, last30Days: sessions from other toolsInline Chat & Inline Suggestions
Tab / EscAccept / dismiss a grey inline suggestionCtrl+RightAccept just the next word of a suggestionAlt+] / Alt+[Show the next / previous suggestioneditor.inlineSuggest.enabledShow inline suggestions at all (default true)editor.inlineSuggest.showToolbaralways, onHover, never: the small toolbar under a suggestioneditor.inlineSuggest.minShowDelayWait in ms before showing a suggestion (default 0)editor.inlineSuggest.suppressSuggestionsHide the normal suggestion list while an inline one showseditor.inlineSuggest.syntaxHighlightingEnabledColour the suggested code like real codegithub.copilot.nextEditSuggestions.enabledSuggest the next edit as well as the current line (needs the Copilot features enabled)inlineChat.fixDiagnosticsOffer Fix with chat on errors and warnings (default true)inlineChat.askInChatOffer Ask in Chat from the inline chat box (default true)inlineChat.affordanceoff (default) or editor: a hint button next to the cursorinlineChat.defaultModelModel for inline chat (default empty)Claude Code Extension: Settings
claudeCode.preferredLocationpanel (default) or sidebar: where Claude opensclaudeCode.useTerminalUse the terminal instead of the built-in chat panel (default false)claudeCode.initialPermissionModedefault, manual, acceptEdits, plan, bypassPermissions for new conversations (default unset)claudeCode.allowDangerouslySkipPermissionsPermit bypass-permissions mode; only for sandboxes with no internetclaudeCode.autosaveSave files before Claude reads or writes them (default true)claudeCode.attachOpenFileAdd the open file to your messages (default true)claudeCode.useCtrlEnterToSendCtrl+Enter sends and Enter makes a new line (default false)claudeCode.focusViewHide tool calls; show just your prompts and the replies (default false)claudeCode.respectGitIgnoreHonour .gitignore in file searches (default true)claudeCode.lockEditorGroupsKeep Claude's tabs in their own editor group (default true)claudeCode.continueAfterReloadResume an interrupted step after a window reload (default true)claudeCode.scrollToBottomOnSendJump to the newest message when you send (default true)claudeCode.showMessageTimestampsShow when each message was sent (default false)claudeCode.archiveInactiveSessionsArchive sessions after 0, 1, 2, 7 or 14 days idle (default 14)claudeCode.usePythonEnvironmentActivate the workspace's Python environment when Claude runs (default true)claudeCode.environmentVariablesExtra environment variables for the Claude process (default [])claudeCode.hideOnboarding / disableLoginPromptHide the getting-started checklist / never prompt to log in (both default false)Claude Code Extension: Shortcuts & Commands
Ctrl+EscapeFocus the Claude input; press again to return to the editorCtrl+Shift+EscapeOpen Claude in a new editor tabAlt+KInsert an @-mention of the current file and selection in the editorCtrl+Alt+FToggle Focus view in a Claude panelCtrl+Shift+TReopen the Claude session tab you just closed (when enabled)Ctrl+NNew conversation, when claudeCode.enableNewConversationShortcut is onClaude Code: Open in Side Bar / New Tab / New Window / TerminalChoose where Claude lives for this sessionClaude Code: New ConversationStart a fresh conversationClaude Code: Create WorktreeMake a Git worktree for a separate line of workClaude Code: Accept / Reject Proposed ChangesApply or discard the diff Claude proposes (also per change at the cursor)Claude Code: Insert @-Mention ReferenceAdd the current file or selection as a referenceClaude Code: Rename Session Tab / Mark Session as UnreadOrganise your sessionsClaude Code: Install Plugin / Show LogsAdd a plugin / open the extension's logA Reasonable Starter Set (my suggestions, not defaults)
"chat.tools.global.autoApprove": falseKeep it off (the default); approve tools as they come"chat.editing.autoAcceptDelay": 0Review every edit yourself (the default)"chat.notifyWindowOnResponseReceived": "windowNotFocused"Hear about long-running answers while you work elsewhere (the default)"editor.inlineSuggest.showToolbar": "onHover"Toolbar only when you want it"claudeCode.initialPermissionMode": "plan"Start Claude conversations by planning rather than editing"claudeCode.useCtrlEnterToSend": trueEnter for new lines when writing long promptsAuto-approval: convenient, and the riskiest setting here
With chat.tools.global.autoApprove on, the agent can run commands and edit files without asking. Prefer narrow rules instead: allow specific safe commands in chat.tools.terminal.autoApprove (for example read-only ones such as git status), keep file-edit approvals to particular patterns, and rely on checkpoints to undo. The same thinking applies to Claude Code's bypassPermissions mode, which is why the extension asks you to opt in separately.
Chat settings you cannot find? They move
Many chat options are marked experimental, are managed by an organisation policy, or are renamed between releases. Search the Settings editor for chat. or @tag:experimental, and use Open Default Settings (JSON) to see what your own version actually has.