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 project
Ask / Edit / AgentChat modes: answers only / edits you review / autonomous multi-step work with tools
chat.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 run
chat.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 it
chat.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 care
chat.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 sandbox
chat.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 never
chat.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, none
chat.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 on
chat.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 arrives
chat.notifyWindowOnConfirmationSame options, for when the agent needs your approval
chat.viewSessions.orientationSession list layout: sideBySide (default) or stacked
chat.agentSessions.showExternalrecent (default), none, last24Hours, last7Days, last30Days: sessions from other tools

Inline Chat & Inline Suggestions

Tab / EscAccept / dismiss a grey inline suggestion
Ctrl+RightAccept just the next word of a suggestion
Alt+] / Alt+[Show the next / previous suggestion
editor.inlineSuggest.enabledShow inline suggestions at all (default true)
editor.inlineSuggest.showToolbaralways, onHover, never: the small toolbar under a suggestion
editor.inlineSuggest.minShowDelayWait in ms before showing a suggestion (default 0)
editor.inlineSuggest.suppressSuggestionsHide the normal suggestion list while an inline one shows
editor.inlineSuggest.syntaxHighlightingEnabledColour the suggested code like real code
github.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 cursor
inlineChat.defaultModelModel for inline chat (default empty)

Claude Code Extension: Settings

claudeCode.preferredLocationpanel (default) or sidebar: where Claude opens
claudeCode.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 internet
claudeCode.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 editor
Ctrl+Shift+EscapeOpen Claude in a new editor tab
Alt+KInsert an @-mention of the current file and selection in the editor
Ctrl+Alt+FToggle Focus view in a Claude panel
Ctrl+Shift+TReopen the Claude session tab you just closed (when enabled)
Ctrl+NNew conversation, when claudeCode.enableNewConversationShortcut is on
Claude Code: Open in Side Bar / New Tab / New Window / TerminalChoose where Claude lives for this session
Claude Code: New ConversationStart a fresh conversation
Claude Code: Create WorktreeMake a Git worktree for a separate line of work
Claude 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 reference
Claude Code: Rename Session Tab / Mark Session as UnreadOrganise your sessions
Claude Code: Install Plugin / Show LogsAdd a plugin / open the extension's log

A 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 prompts
Auto-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.