Skip to content

Instantly share code, notes, and snippets.

@dpearson2699
Created May 12, 2026 04:57
Show Gist options
  • Select an option

  • Save dpearson2699/a69ace348faa90a132aa263684651815 to your computer and use it in GitHub Desktop.

Select an option

Save dpearson2699/a69ace348faa90a132aa263684651815 to your computer and use it in GitHub Desktop.
VS Code memory tool repro evidence: memory-probe-gpt55-2026-05-12
{
"line": 22,
"sid": "73ff422e-1a78-440e-bb6f-9c9fbafe2e41",
"type": "llm_request",
"name": "chat:gpt-5.5",
"spanId": "ac51d80ec3371d43",
"parentSpanId": "c7f24ac918bab18c",
"model": "gpt-5.5",
"debugName": "panel/editAgent",
"systemPromptFile": "system_prompt_0.json",
"toolsFile": "tools_0.json",
"requestShape": "{\"api\":\"responses\",\"inputItemCount\":3,\"inputItemTypes\":[\"unknown\",\"unknown\",\"unknown\"]}"
}
{
"github.copilot.chat.tools.defaultToolsGrouped": {
"value": true,
"source": "/Users/dpearson/Library/Application Support/Code - Insiders/User/settings.json:103"
},
"chat.advanced.tools.defaultToolsGrouped": {
"explicitlySetDirectly": false,
"searched": [
"/Users/dpearson/Library/Application Support/Code - Insiders/User/**/*.json",
"/Users/dpearson/repos/vscode/.vscode/settings.json"
]
},
"chat.tools.defaultToolsGrouped": {
"explicitlySetDirectly": false,
"searched": [
"/Users/dpearson/Library/Application Support/Code - Insiders/User/**/*.json",
"/Users/dpearson/repos/vscode/.vscode/settings.json"
]
}
}
{
"systemPromptFile": "/Users/dpearson/Library/Application Support/Code - Insiders/User/workspaceStorage/eed24517427362efc81592f939ce0f28/GitHub.copilot-chat/debug-logs/73ff422e-1a78-440e-bb6f-9c9fbafe2e41/system_prompt_0.json",
"containsMemoryInstructions": true,
"containsMemoriesPath": true,
"containsVscodeMemoryReference": true,
"containsToolVscodeMemoryReference": true,
"containsResolveMemoryFileUriReference": true
}
{
"content": "[{\"type\":\"function\",\"name\":\"activate_jupyter_notebook_tools\",\"description\":\"Call this tool when you need access to a new category of tools. The category of tools is described as follows:\\n\\nCall tools from this group when you need to work with Jupyter notebooks - creating, editing, running cells, and managing notebook operations.\\n\\nBe sure to call this tool if you need a capability related to the above.\"},{\"type\":\"function\",\"name\":\"activate_vs_code_interaction\",\"description\":\"Call this tool when you need access to a new category of tools. The category of tools is described as follows:\\n\\nCall tools from this group when you need to interact with the VS Code workspace and access VS Code features.\\n\\nBe sure to call this tool if you need a capability related to the above.\"},{\"type\":\"function\",\"name\":\"activate_web_interaction\",\"description\":\"Call this tool when you need access to a new category of tools. The category of tools is described as follows:\\n\\nCall tools from this group when you need to interact with web content, browse websites, or access external resources.\\n\\nBe sure to call this tool if you need a capability related to the above.\"},{\"type\":\"function\",\"name\":\"activate_testing\",\"description\":\"Call this tool when you need access to a new category of tools. The category of tools is described as follows:\\n\\nCall tools from this group when you need to run tests, analyze test failures, and manage test workflows.\\n\\nBe sure to call this tool if you need a capability related to the above.\"},{\"type\":\"function\",\"name\":\"apply_patch\",\"description\":\"Use the `apply_patch` tool to edit files.\\nYour patch language is a stripped-down, file-oriented diff format designed to be easy to parse and safe to apply. You can think of it as a high-level envelope:\\n\\n*** Begin Patch\\n[ one or more file sections ]\\n*** End Patch\\n\\nWithin that envelope, you get a sequence of file operations.\\nYou MUST include a header to specify the action you are taking.\\nEach operation starts with one of three headers:\\n\\n*** Add File: <path> - create a new file. Every following line is a + line (the initial contents).\\n*** Delete File: <path> - remove an existing file. Nothing follows.\\n*** Update File: <path> - patch an existing file in place (optionally with a rename).\\n\\nMay be immediately followed by *** Move to: <new path> if you want to rename the file.\\nThen one or more “hunks”, each introduced by @@ (optionally followed by a hunk header).\\nWithin a hunk each line starts with:\\n\\nFor instructions on [context_before] and [context_after]:\\n- By default, show 3 lines of code immediately above and 3 lines immediately below each change. If a change is within 3 lines of a previous change, do NOT duplicate the first change's [context_after] lines in the second change's [context_before] lines.\\n- If 3 lines of context is insufficient to uniquely identify the snippet of code within the file, use the @@ operator to indicate the class or function to which the snippet belongs. For instance, we might have:\\n@@ class BaseClass\\n[3 lines of pre-context]\\n- [old_code]\\n+ [new_code]\\n[3 lines of post-context]\\n\\n- If a code block is repeated so many times in a class or function such that even a single `@@` statement and 3 lines of context cannot uniquely identify the snippet of code, you can use multiple `@@` statements to jump to the right context. For instance:\\n\\n@@ class BaseClass\\n@@ \\t def method():\\n[3 lines of pre-context]\\n- [old_code]\\n+ [new_code]\\n[3 lines of post-context]\\n\\nThe full grammar definition is below:\\nPatch := Begin { FileOp } End\\nBegin := \\\"*** Begin Patch\\\" NEWLINE\\nEnd := \\\"*** End Patch\\\" NEWLINE\\nFileOp := AddFile | DeleteFile | UpdateFile\\nAddFile := \\\"*** Add File: \\\" path NEWLINE { \\\"+\\\" line NEWLINE }\\nDeleteFile := \\\"*** Delete File: \\\" path NEWLINE\\nUpdateFile := \\\"*** Update File: \\\" path NEWLINE [ MoveTo ] { Hunk }\\nMoveTo := \\\"*** Move to: \\\" newPath NEWLINE\\nHunk := \\\"@@\\\" [ header ] NEWLINE { HunkLine } [ \\\"*** End of File\\\" NEWLINE ]\\nHunkLine := (\\\" \\\" | \\\"-\\\" | \\\"+\\\") text NEWLINE\\n\\nA full patch can combine several operations:\\n\\n*** Begin Patch\\n*** Add File: hello.txt\\n+Hello world\\n*** Update File: src/app.py\\n*** Move to: src/main.py\\n@@ def greet():\\n-print(\\\"Hi\\\")\\n+print(\\\"Hello, world!\\\")\\n*** Delete File: obsolete.txt\\n*** End Patch\\n\\nIt is important to remember:\\n\\n- You must include a header with your intended action (Add/Delete/Update)\\n- You must prefix new lines with `+` even when creating a new file\\n- File references must be ABSOLUTE, NEVER RELATIVE.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"The edit patch to apply.\"},\"explanation\":{\"type\":\"string\",\"description\":\"A short description of what the tool call is aiming to achieve.\"}},\"required\":[\"input\",\"explanation\"]}},{\"type\":\"function\",\"name\":\"create_directory\",\"description\":\"Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"dirPath\":{\"type\":\"string\",\"description\":\"The absolute path to the directory to create.\"}},\"required\":[\"dirPath\"]}},{\"type\":\"function\",\"name\":\"create_file\",\"description\":\"This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"filePath\":{\"type\":\"string\",\"description\":\"The absolute path to the file to create.\"},\"content\":{\"type\":\"string\",\"description\":\"The content to write to the file.\"}},\"required\":[\"filePath\",\"content\"]}},{\"type\":\"function\",\"name\":\"file_search\",\"description\":\"Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\\n- **/*.{js,ts} to match all js/ts files in the workspace.\\n- src/** to match all files under the top-level src folder.\\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.\\n\\nIn a multi-root workspace, you can scope the search to a specific workspace folder by using the absolute path to the folder as the query, e.g. /path/to/folder/**/*.ts.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search for files with names or paths matching this glob pattern. Can also be an absolute path to a workspace folder to scope the search in a multi-root workspace.\"},\"maxResults\":{\"type\":\"number\",\"description\":\"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults.\"}},\"required\":[\"query\"]}},{\"type\":\"function\",\"name\":\"grep_search\",\"description\":\"Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.\\n\\nIn a multi-root workspace, you can scope the search to a specific workspace folder by using the absolute path to the folder as the includePattern, e.g. /path/to/folder.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive.\"},\"isRegexp\":{\"type\":\"boolean\",\"description\":\"Whether the pattern is a regex.\"},\"includePattern\":{\"type\":\"string\",\"description\":\"Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \\\"src/folder/**\\\". Do not use | in includePattern. Can also be an absolute path to a workspace folder to scope the search in a multi-root workspace.\"},\"maxResults\":{\"type\":\"number\",\"description\":\"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults.\"},\"includeIgnoredFiles\":{\"type\":\"boolean\",\"description\":\"Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs.\"}},\"required\":[\"query\",\"isRegexp\"]}},{\"type\":\"function\",\"name\":\"list_dir\",\"description\":\"List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file\",\"parameters\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\",\"description\":\"The absolute path to the directory to list.\"}},\"required\":[\"path\"]}},{\"type\":\"function\",\"name\":\"read_file\",\"description\":\"Read the contents of a file.\\n\\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads. Binary files use startLine/endLine as byte offsets.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"filePath\":{\"description\":\"The absolute path of the file to read.\",\"type\":\"string\"},\"startLine\":{\"type\":\"number\",\"description\":\"The line number to start reading from, 1-based.\"},\"endLine\":{\"type\":\"number\",\"description\":\"The inclusive line number to end reading at, 1-based.\"}},\"required\":[\"filePath\",\"startLine\",\"endLine\"]}},{\"type\":\"function\",\"name\":\"resolve_memory_file_uri\",\"description\":\"Resolve a memory file path (like /memories/session/plan.md or /memories/repo/notes.md) to its fully qualified URI. Use this when you need the actual URI for a memory file, for example to pass it to setArtifacts. The path must start with /memories/.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\",\"description\":\"The memory file path to resolve (e.g. /memories/session/plan.md).\"}},\"required\":[\"path\"]}},{\"type\":\"function\",\"name\":\"semantic_search\",\"description\":\"Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments.\"}},\"required\":[\"query\"]}},{\"type\":\"function\",\"name\":\"session_store_sql\",\"description\":\"Query the local session store containing history from past coding sessions. Uses SQLite SQL syntax.\\n\\nActions: 'query' (execute SQL — supports JOINs, FTS5 MATCH, aggregations), 'standup' (pre-fetch last 24h data), 'reindex' (rebuild index from debug logs).\",\"parameters\":{\"type\":\"object\",\"properties\":{\"action\":{\"type\":\"string\",\"enum\":[\"query\",\"standup\",\"reindex\"],\"description\":\"The action to perform. 'query' (default) executes a SQL query. 'standup' pre-fetches last 24h session data for standup reports. 'reindex' rebuilds the local session index and syncs to cloud if enabled.\"},\"query\":{\"type\":\"string\",\"description\":\"A single read-only SQL query to execute. Required when action is 'query'. Supports SELECT, WITH, JOINs, aggregations, and FTS5 MATCH. Only one statement per call — do not combine multiple queries with semicolons.\"},\"force\":{\"type\":\"boolean\",\"description\":\"When true with action 'reindex', re-processes all sessions including already-indexed ones. Default false (skips already-indexed sessions).\"},\"description\":{\"type\":\"string\",\"description\":\"A 2-5 word summary of what this call does (e.g. 'Recent sessions overview', 'Generate standup', 'Reindex sessions').\"}},\"required\":[\"description\"]}},{\"type\":\"function\",\"name\":\"view_image\",\"description\":\"View the contents of an image file. Use this instead of read_file for supported image files such as png, jpg, jpeg, gif, and webp. The tool returns the image directly to multimodal models and does not take line ranges or offsets.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"filePath\":{\"description\":\"The absolute path of the image file to view.\",\"type\":\"string\"}},\"required\":[\"filePath\"]}},{\"type\":\"function\",\"name\":\"execution_subagent\",\"description\":\"Launch an iterative execution-focused subagent that performs an execution-based task.\\nUSE THIS INSTEAD OF RUNNING INDIVIDUAL COMMANDS WITH run_in_terminal EXCEPT IN THE RARE CASES THAT YOU NEED THE FULL OUTPUT OF A COMMAND.\\nHere are some examples of how it can be used:\\n- Run tests and filter the output to summarize which tests failed and why.\\n- Install all dependencies of a project.\\nReturns: A list of commands that were run, along with relevant excerpts of each command's output.\\nInput fields:\\n- query: What to execute, and what to look for in the output. Can include exact commands to run, or a description of an execution task.\\n- description: Short user-visible invocation message.\\nNOTE: In the subagent query, make sure to specify any restrictions or guidelines on running commands provided by the user earlier in the conversation.\\nFor example, if the user instructs the agent to not edit files in a particular directory, make sure to include that instruction in the subagent query when relevant.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"What to execute, and what to look for in the output. Can include exact commands to run, or a description of an execution task.\"},\"description\":{\"type\":\"string\",\"description\":\"User-visible invocation message shown while the subagent runs.\"}},\"required\":[\"query\",\"description\"]}},{\"type\":\"function\",\"name\":\"get_task_output\",\"description\":\"Get the output of a task\",\"parameters\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The task ID for which to get the output.\"},\"workspaceFolder\":{\"type\":\"string\",\"description\":\"The workspace folder path containing the task\"}},\"required\":[\"id\",\"workspaceFolder\"]}},{\"type\":\"function\",\"name\":\"get_terminal_output\",\"description\":\"Get output from an active terminal execution (identified by the `id` returned from run_in_terminal).\",\"parameters\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The ID of an active terminal execution to check (returned by run_in_terminal for async executions, or for sync executions that timed out and were moved to the background). This must be the exact opaque UUID returned by that tool; terminal names, labels, or integers are invalid.\",\"pattern\":\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\"}},\"required\":[\"id\"]}},{\"type\":\"function\",\"name\":\"kill_terminal\",\"description\":\"Kill a terminal by its ID. Use this to clean up terminals that are no longer needed (e.g., after stopping a server or when a long-running task completes). The terminal ID is returned by run_in_terminal in async mode (legacy: isBackground=true).\",\"parameters\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The ID of the persistent terminal to kill (returned by run_in_terminal in async mode).\",\"pattern\":\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\"}},\"required\":[\"id\"]}},{\"type\":\"function\",\"name\":\"manage_todo_list\",\"description\":\"Updates the task plan.\\nProvide an optional explanation and a list of plan items, each with a step and status.\\nAt most one step can be in_progress at a time.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"todoList\":{\"type\":\"array\",\"description\":\"Complete array of all todo items. Must include ALL items - both existing and new.\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\",\"description\":\"Unique identifier for the todo. Use sequential numbers starting from 1.\"},\"title\":{\"type\":\"string\",\"description\":\"Concise action-oriented todo label (3-7 words). Displayed in UI.\"},\"status\":{\"type\":\"string\",\"enum\":[\"not-started\",\"in-progress\",\"completed\"],\"description\":\"not-started: Not begun | in-progress: Currently working (max 1) | completed: Fully finished with no blockers\"}},\"required\":[\"id\",\"title\",\"status\"]}}},\"required\":[\"todoList\"]}},{\"type\":\"function\",\"name\":\"run_in_terminal\",\"description\":\"This tool allows you to execute shell commands in a persistent zsh terminal session, preserving environment variables, working directory, and other context across multiple commands.\\n\\nCommand Execution:\\n- Use && to chain simple commands on one line\\n- Prefer pipelines | over temporary files for data flow\\n- Never create a sub-shell (eg. bash -c \\\"command\\\") unless explicitly asked\\n\\nDirectory Management:\\n- Prefer relative paths when navigating directories, only use absolute when the path is far away or the current cwd is not expected\\n- By default (mode=sync), shell and cwd are reused by subsequent sync commands\\n- Use $PWD for current directory references\\n- Consider using pushd/popd for directory stack management\\n- Supports directory shortcuts like ~ and -\\n\\nProgram Execution:\\n- Supports Python, Node.js, and other executables\\n- Install packages via package managers (brew, apt, etc.)\\n- Use which or command -v to verify command availability\\n\\nAsync Mode:\\n- Use mode=async ONLY for processes that should keep running while you do other work (servers, watchers, dev daemons)\\n- For one-shot long-running commands where you have nothing to do until they finish (package installs, builds, downloads, test suites), use mode=sync with a generous timeout (e.g. 600000 / 10 min for installs, longer for big builds) so the command can complete before your turn ends\\n- Returns a terminal ID for checking status and runtime later\\n\\nUse send_to_terminal to send commands or input to a terminal session.\\n\\nOutput Management:\\n- Output is automatically truncated if longer than 60KB to prevent context overflow\\n- Use head, tail, grep, awk to filter and limit output size\\n- For pager commands, disable paging: git --no-pager or add | cat\\n- Use wc -l to count lines before displaying large outputs\\n\\nBest Practices:\\n- Quote variables: \\\"$var\\\" instead of $var to handle spaces\\n- Use find with -exec or xargs for file operations\\n- Be specific with commands to avoid excessive output\\n- Avoid printing credentials unless absolutely required\\n- NEVER run sleep or similar wait commands in a terminal. You will be automatically notified on your next turn when async terminal commands or timed-out sync commands complete or need input. Do NOT poll for completion.\\n\\nInteractive Input Handling:\\n- When a terminal command is waiting for interactive input, do NOT suggest alternatives or ask the user whether to proceed. Instead, use the vscode_askQuestions tool to collect the needed values from the user, then send them.\\n- NEVER use vscode_askQuestions to request sensitive input such as passwords, passphrases, API keys, tokens, or other secrets — answers to that tool are sent through the model. If the prompt requires a secret, tell the user to type it directly into the terminal and stop; do not call vscode_askQuestions or send_to_terminal for that prompt.\\n- Send exactly one answer per prompt using send_to_terminal. Never send multiple answers in a single send.\\n- After each send, call get_terminal_output to read the next prompt before sending the next answer.\\n- Continue one prompt at a time until the command finishes.\\n- Use type to check command type (builtin, function, alias)\\n- Use jobs, fg, bg for job control\\n- Use [[ ]] for conditional tests instead of [ ]\\n- Prefer $() over backticks for command substitution\\n- Take advantage of zsh globbing features (**, extended globs)\\n\\nExecution mode:\\n- mode='sync': wait for completion (optionally capped by timeout); if still running when timeout elapses, return with a terminal ID.\\n- mode='async': wait for an initial idle/output signal, then return with terminal output snapshot and ID. Timeout caps how long to wait for the initial idle/output signal.\\n- Prefer mode='sync' for commands that will prompt for interactive input (e.g., npm init, interactive installers, configuration wizards).\\n\\nTimeout parameter: For one-shot long-running commands, set a generous timeout as a safety net (e.g. 600000 for installs, longer for big builds). Omit timeout only for processes that should run indefinitely (servers, daemons). If the timeout elapses, you get a terminal ID and can check output later.\\n\\nTerminal notifications: When an async command finishes or a sync command times out, you will be automatically notified on your next turn with the exit code and terminal output. You will also be notified if the terminal needs input. Do NOT poll or sleep to wait for completion.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"command\":{\"type\":\"string\",\"description\":\"The command to run in the terminal.\"},\"explanation\":{\"type\":\"string\",\"description\":\"A one-sentence description of what the command does. This will be shown to the user before the command is run.\"},\"goal\":{\"type\":\"string\",\"description\":\"A short description of the goal or purpose of the command (e.g., \\\"Install dependencies\\\", \\\"Start development server\\\").\"},\"mode\":{\"type\":\"string\",\"enum\":[\"sync\",\"async\"],\"enumDescriptions\":[\"Wait for completion up to timeout, then return with collected output. If still running at timeout, the terminal session continues in the background.\",\"Wait for an initial idle/output signal, then return with a terminal ID and output snapshot while the session may continue running.\"],\"description\":\"Execution mode for this command.\"},\"isBackground\":{\"type\":\"boolean\",\"description\":\"Legacy execution mode flag. Deprecated in favor of \\\"mode\\\". If true, equivalent to mode=async. If false, equivalent to mode=sync.\"},\"timeout\":{\"type\":\"number\",\"description\":\"Optional hard cap in milliseconds on how long the tool tracks the command before returning. Omit to let the command run to completion (recommended for package installs, builds, and long-running scripts). Use 0 to explicitly indicate no timeout.\"}},\"required\":[\"command\",\"explanation\",\"goal\",\"mode\"]}},{\"type\":\"function\",\"name\":\"run_task\",\"description\":\"Runs a VS Code task.\\n\\n- If you see that an appropriate task exists for building or running code, prefer to use this tool to run the task instead of using the run_in_terminal tool.\\n- Make sure that any appropriate build or watch task is running before trying to run tests or execute code.\\n- If the user asks to run a task, use this tool to do so.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"workspaceFolder\":{\"type\":\"string\",\"description\":\"The workspace folder path containing the task\"},\"id\":{\"type\":\"string\",\"description\":\"The task ID to run.\"}},\"required\":[\"workspaceFolder\",\"id\"]}},{\"type\":\"function\",\"name\":\"runSubagent\",\"description\":\"Launch a new agent to handle complex, multi-step tasks autonomously. This tool is good at researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries, use this agent to perform the search for you.\\n\\n- Agents do not run async or in the background, you will wait for the agent's result.\\n- When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.\\n- Each agent invocation is stateless. You will not be able to send additional messages to the agent, nor will the agent be able to communicate with you outside of its final report. Therefore, your prompt should contain a highly detailed task description for the agent to perform autonomously and you should specify exactly what information the agent should return back to you in its final and only message to you.\\n- The agent's outputs should generally be trusted\\n- Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent\\n- If the user asks for a certain agent, you MUST provide that EXACT agent name (case-sensitive) to invoke that specific agent.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"A detailed description of the task for the agent to perform\"},\"description\":{\"type\":\"string\",\"description\":\"A short (3-5 word) description of the task\"},\"agentName\":{\"type\":\"string\",\"description\":\"Name of the agent to invoke.\"},\"model\":{\"type\":\"string\",\"description\":\"Optional model for the subagent. Format: \\\"Model Name (Vendor)\\\", vendor is usually \\\"copilot\\\". Only use to enforce a specific model.\"}},\"required\":[\"prompt\",\"description\",\"agentName\"]}},{\"type\":\"function\",\"name\":\"search_subagent\",\"description\":\"Launch a fast agent specialized for exploring codebases. Use this when you need to quickly find files by patterns (eg. \\\"src/components/**/*.tsx\\\"), search code for keywords (eg. \\\"API endpoints\\\"), or answer questions about the codebase (eg. \\\"how do API endpoints work?\\\").\\nReturns: A list of relevant files/snippet locations in the workspace.\\n\\nInput fields:\\n- query: Natural language description of what to search for.\\n- description: Short user-visible invocation message. \\n- details: 2-3 sentences detailing the objective of the search agent.\\n- thoroughness (optional): Search thoroughness — 'normal' (balanced and quick, sufficient for most cases) or 'deep' (more turns, broader exploration; only use when normal is clearly not enough).\\n- thoroughness (optional): Search thoroughness — 'normal' (balanced and quick, sufficient for most cases) or 'deep' (more turns, broader exploration; only use when normal is clearly not enough).\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Natural language description of what to search for.\"},\"description\":{\"type\":\"string\",\"description\":\"A short (3-5 word) description of the task.\"},\"details\":{\"type\":\"string\",\"description\":\"A more detailed description of the objective for the search subagent. This helps the sub-agent remain on task and understand its purpose.\"},\"thoroughness\":{\"type\":\"string\",\"enum\":[\"normal\",\"deep\"],\"description\":\"Controls the search thoroughness and turn limit. 'normal' is balanced and quick, sufficient for most searches. Only use 'deep' when the task clearly requires broader exploration across many files.\"}},\"required\":[\"query\",\"description\",\"details\"]}},{\"type\":\"function\",\"name\":\"send_to_terminal\",\"description\":\"Send input text to an active terminal execution (identified by the `id` returned from run_in_terminal). The 'command' field may be empty or whitespace to press Enter (useful for interactive prompts). By default, returns the last 20 lines of terminal output captured shortly after sending. Set 'waitForOutput' to true for interactive programs (games, REPLs, etc.) to wait until the terminal becomes idle before returning output — this gives you the program's response to your input.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"The ID of an active terminal execution to send a command to (returned by run_in_terminal for async executions, or for sync executions that timed out and were moved to the background).\",\"pattern\":\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\"},\"command\":{\"type\":\"string\",\"description\":\"The input text to send to the terminal. The text is sent followed by Enter. Provide an empty or whitespace string to send just Enter (for interactive prompts).\"},\"waitForOutput\":{\"type\":\"boolean\",\"description\":\"When true, waits for the terminal to become idle (no new output for a short period) before returning, instead of returning immediately. Use this for interactive programs where you need to see the full response to your input. Defaults to false.\"}},\"required\":[\"id\",\"command\"]}},{\"type\":\"function\",\"name\":\"skill\",\"description\":\"Invoke a skill to handle a user's request with specialized instructions and workflows.\\n\\nSkills are domain-specific capabilities discovered from SKILL.md files. When a user's task matches an available skill, call this tool to load and apply it. If the user types a slash command (e.g. \\\"/deploy\\\", \\\"/test\\\"), treat it as a skill invocation.\\n\\nUsage:\\n- Pass the skill name only (no arguments).\\n- Examples: skill: \\\"docx\\\", skill: \\\"deploy\\\", skill: \\\"fix-ci-failures\\\"\\n\\nRules:\\n- Available skills appear in system-reminder messages earlier in the conversation.\\n- BLOCKING: When a matching skill exists, you MUST call this tool before producing any other output about the task.\\n- Never reference a skill without calling this tool.\\n- Do not call this tool for a skill that is already active in the current turn (indicated by a <command-name> tag).\\n- Do not use this tool for built-in commands such as /help or /clear.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"skill\":{\"type\":\"string\",\"description\":\"The skill name. E.g., \\\"commit\\\", \\\"review-pr\\\", or \\\"pdf\\\"\"}},\"required\":[\"skill\"]}},{\"type\":\"function\",\"name\":\"tool_search\",\"description\":\"Search for relevant tools by describing what you need. Returns tool references for tools matching your query. Use this when you need to find a tool but aren't sure of its exact name. Check the availableDeferredTools list in your instructions for the full set of deferred tools, and include relevant tool names from that list in your query for more accurate results. Use broad queries to find all related tools in a single call rather than making multiple narrow searches.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Natural language description of what tool capability you are looking for. Use broad queries to cover related tools in one search (e.g., \\\"github\\\" instead of separate searches for issues and PRs).\"}},\"required\":[\"query\"]}},{\"type\":\"function\",\"name\":\"vscode_listCodeUsages\",\"description\":\"Find all usages (references, definitions, and implementations) of a code symbol across the workspace. This tool locates where a symbol is referenced, defined, or implemented.\\n\\nInput:\\n- \\\"symbol\\\": The exact name of the symbol to search for (function, class, method, variable, type, etc.).\\n- \\\"uri\\\": A full URI (e.g. \\\"file:///path/to/file.ts\\\") of a file where the symbol appears. Provide either \\\"uri\\\" or \\\"filePath\\\".\\n- \\\"filePath\\\": A workspace-relative file path (e.g. \\\"src/utils/helpers.ts\\\") of a file where the symbol appears. Provide either \\\"uri\\\" or \\\"filePath\\\".\\n- \\\"lineContent\\\": A substring of the line of code where the symbol appears. This is used to locate the exact position in the file. Must be the actual text from the file - do NOT fabricate it.\\n\\nIMPORTANT: The file and line do NOT need to be the definition of the symbol. Any occurrence works - a usage, an import, a call site, etc. You can pick whichever occurrence is most convenient.\\n\\nIf the tool returns an error, retry with corrected input - ensure the file path is correct, the line content matches the actual file content, and the symbol name appears in that line.\\n\\nIf the file's language has no reference provider registered, the tool returns an error.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"description\":\"The exact name of the symbol (function, class, method, variable, type, etc.) to find usages of.\"},\"uri\":{\"type\":\"string\",\"description\":\"A full URI of a file where the symbol appears (e.g. \\\"file:///path/to/file.ts\\\"). Provide either \\\"uri\\\" or \\\"filePath\\\".\"},\"filePath\":{\"type\":\"string\",\"description\":\"A workspace-relative file path where the symbol appears (e.g. \\\"src/utils/helpers.ts\\\"). Provide either \\\"uri\\\" or \\\"filePath\\\".\"},\"lineContent\":{\"type\":\"string\",\"description\":\"A substring of the line of code where the symbol appears. Used to locate the exact position. Must be actual text from the file.\"}},\"required\":[\"symbol\",\"lineContent\"]}},{\"type\":\"function\",\"name\":\"vscode_renameSymbol\",\"description\":\"Rename a code symbol across the workspace using the language server's rename functionality. This performs a precise, semantics-aware rename that updates all references.\\n\\nInput:\\n- \\\"symbol\\\": The exact current name of the symbol to rename.\\n- \\\"newName\\\": The new name for the symbol.\\n- \\\"uri\\\": A full URI (e.g. \\\"file:///path/to/file.ts\\\") of a file where the symbol appears. Provide either \\\"uri\\\" or \\\"filePath\\\".\\n- \\\"filePath\\\": A workspace-relative file path (e.g. \\\"src/utils/helpers.ts\\\") of a file where the symbol appears. Provide either \\\"uri\\\" or \\\"filePath\\\".\\n- \\\"lineContent\\\": A substring of the line of code where the symbol appears. This is used to locate the exact position in the file. Must be the actual text from the file - do NOT fabricate it.\\n\\nIMPORTANT: The file and line do NOT need to be the definition of the symbol. Any occurrence works - a usage, an import, a call site, etc. You can pick whichever occurrence is most convenient.\\n\\nIf the tool returns an error, retry with corrected input - ensure the file path is correct, the line content matches the actual file content, and the symbol name appears in that line.\\n\\nIf the file's language has no rename provider registered, the tool returns an error.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"description\":\"The exact current name of the symbol to rename.\"},\"newName\":{\"type\":\"string\",\"description\":\"The new name for the symbol.\"},\"uri\":{\"type\":\"string\",\"description\":\"A full URI of a file where the symbol appears (e.g. \\\"file:///path/to/file.ts\\\"). Provide either \\\"uri\\\" or \\\"filePath\\\".\"},\"filePath\":{\"type\":\"string\",\"description\":\"A workspace-relative file path where the symbol appears (e.g. \\\"src/utils/helpers.ts\\\"). Provide either \\\"uri\\\" or \\\"filePath\\\".\"},\"lineContent\":{\"type\":\"string\",\"description\":\"A substring of the line of code where the symbol appears. Used to locate the exact position. Must be actual text from the file.\"}},\"required\":[\"symbol\",\"newName\",\"lineContent\"]}},{\"type\":\"function\",\"name\":\"vscode_searchExtensions_internal\",\"description\":\"This is a tool for browsing Visual Studio Code Extensions Marketplace. It allows the model to search for extensions and retrieve detailed information about them. The model should use this tool whenever it needs to discover extensions or resolve information about known ones. To use the tool, the model has to provide the category of the extensions, relevant search keywords, or known extension IDs. Note that search results may include false positives, so reviewing and filtering is recommended.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"category\":{\"type\":\"string\",\"description\":\"The category of extensions to search for\",\"enum\":[\"AI\",\"Azure\",\"Chat\",\"Data Science\",\"Debuggers\",\"Extension Packs\",\"Education\",\"Formatters\",\"Keymaps\",\"Language Packs\",\"Linters\",\"Machine Learning\",\"Notebooks\",\"Programming Languages\",\"SCM Providers\",\"Snippets\",\"Testing\",\"Themes\",\"Visualization\",\"Other\"]},\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The keywords to search for\"},\"ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The ids of the extensions to search for\"}}}}]"
}
{
"toolsFile": "/Users/dpearson/Library/Application Support/Code - Insiders/User/workspaceStorage/eed24517427362efc81592f939ce0f28/GitHub.copilot-chat/debug-logs/73ff422e-1a78-440e-bb6f-9c9fbafe2e41/tools_0.json",
"toolCount": 30,
"containsResolveMemoryFileUri": true,
"containsMemory": false,
"containsVscodeMemory": false,
"memoryRelatedToolNames": [
"resolve_memory_file_uri"
],
"allToolNames": [
"activate_jupyter_notebook_tools",
"activate_testing",
"activate_vs_code_interaction",
"activate_web_interaction",
"apply_patch",
"create_directory",
"create_file",
"execution_subagent",
"file_search",
"get_task_output",
"get_terminal_output",
"grep_search",
"kill_terminal",
"list_dir",
"manage_todo_list",
"read_file",
"resolve_memory_file_uri",
"runSubagent",
"run_in_terminal",
"run_task",
"search_subagent",
"semantic_search",
"send_to_terminal",
"session_store_sql",
"skill",
"tool_search",
"view_image",
"vscode_listCodeUsages",
"vscode_renameSymbol",
"vscode_searchExtensions_internal"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment