← Blog

How to Remove Tools in Claude: App and API Guide

2026-09-16 · 5 min read · SubToAPI Team

"Removing tools in Claude" means two different things depending on where you're working. If you're a Claude.ai user, it usually means disconnecting an integration, connector, or MCP server that's cluttering your chat or that you no longer trust with access to your data. If you're a developer, it means removing a tool definition from an API request so Claude stops calling a function you no longer want it to use.

This guide covers both, starting with the simpler case (the Claude.ai interface) and moving into the API side, where "removing" a tool is really about controlling what gets sent in the tools array of a request.

Removing Tools and Connectors in Claude.ai

If you added a connector (Google Drive, GitHub, Slack, a custom MCP server, etc.) and want to take it away, you don't need to touch any code — it's a settings change.

  1. Open Claude.ai and go to Settings.
  2. Click Connectors (sometimes labeled Integrations depending on your account type).
  3. Find the tool or connector you want to remove.
  4. Click Disconnect or Remove, and confirm.

For desktop-app MCP servers configured through a local config file (common on Claude Desktop), removal is done by editing the config directly:

  1. Open your Claude Desktop configuration file (typically claude_desktop_config.json).
  2. Find the entry under mcpServers for the tool you want gone.
  3. Delete that JSON block entirely.
  4. Save the file and restart Claude Desktop.
{
  "mcpServers": {
    "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem"] }
  }
}

Deleting the "filesystem" key (and its contents) removes that tool from every future conversation until you re-add it.

If you're on a Team or Enterprise plan, some connectors are managed at the workspace level. In that case an individual user can't remove them — an admin has to disable the connector from the organization's admin console.

Removing Tools From API Requests

If you're building on top of Claude's API rather than using the chat interface, "removing a tool" is a request-shape problem, not a settings problem. Tool use works by sending a tools array with each API call — Claude has no memory of tools between requests, so the fastest way to remove a tool is simply to not include it next time.

{
  "model": "claude-sonnet-4-5",
  "max_tokens": 1024,
  "tools": [
    { "name": "get_weather", "description": "...", "input_schema": { ... } }
  ],
  "messages": [ { "role": "user", "content": "What's the weather in Paris?" } ]
}

To remove the search_web tool from this conversation, just leave it out of the array on the next call:

{
  "tools": [
    { "name": "get_weather", "description": "...", "input_schema": { ... } }
  ]
}

There's no separate "unregister tool" endpoint because tools aren't stored server-side per conversation — you own the array, so you control exactly what Claude can call at each turn.

Temporarily disabling tools without deleting them

If you want to keep a tool's definition in your codebase but stop Claude from using it for a specific request, you have two options:

{
  "tools": [ { "name": "get_weather", "...": "..." } ],
  "tool_choice": { "type": "none" }
}

This is the cleanest way to "remove" tool access for a single turn while keeping your tool definitions intact for later use.

Building conditional tool sets

For real applications, tools usually need to come and go based on user role, subscription tier, or app state. A common pattern:

function getToolsForUser(user) {
  const tools = [baseSearchTool];
  if (user.plan === "pro") tools.push(advancedAnalyticsTool);
  if (user.role === "admin") tools.push(deleteRecordTool);
  return tools;
}

If you're routing Claude access through an API layer like SubToAPI, this filtering happens in your own backend before the request ever hits /v1/messages — SubToAPI just proxies the call with your application key (sub_live_...), so removing a tool is still just a matter of what you include in the request body. See /docs/tools for the exact request shape and /docs/messages for the base endpoint. If you're new to sending tool-use requests at all, /docs/quickstart walks through your first authenticated call.

Removing Tools in Claude Code

If you're working in Claude Code (the CLI) and want to stop it from using a specific built-in tool (like file editing or bash execution) in a session, that's controlled through permission settings rather than the tools array — check your project's .claude configuration or session flags for tool-specific allow/deny lists. This is separate from the API's tools array and applies only to CLI sessions.

Quick Checklist

FAQs

Does removing a tool delete data it already created? No. Removing a tool or connector only stops future access — files, records, or messages a tool previously created or modified stay wherever they were stored.

Can I remove a tool mid-conversation in the API? Yes. Since tools are sent fresh with every request, simply omit the tool from the tools array on your next message and Claude will no longer have access to it, even within the same conversation history.

Why does Claude still try to call a tool I removed? Check for cached request-building code or a hardcoded tools array elsewhere in your app — if the same tool definition is still being sent on a later call, Claude will still see it as available.

Turn your Claude access into an HTTPS API

SubToAPI gives you application API keys, streaming, tool use and usage insights on top of your existing Claude access — set up in minutes.

Start free  Read the quickstart →