😽
Claude Codeのビルドインツールは無効化してシステムプロンプトを削減できる
TLDR: denyに不要なツールを入れるとシステムプロンプトも削減できます。
~/.claude/settings.json の .permissions.deny にツール名を含めるとそのツールの使い方を含むシステムプロンプトが入らなくなります。
{
"permissions": {
"deny": [
"NotebookEdit"
]
},
}
before
> /context
⎿
Context Usage
⛁ ⛀ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ claude-haiku-4-5-20251001 · 22k/200k tokens (11%)
⛀ ⛀ ⛀ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System prompt: 3.1k tokens (1.6%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System tools: 16.0k tokens (8.0%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Custom agents: 1.4k tokens (0.7%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Memory files: 1.0k tokens (0.5%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Messages: 8 tokens (0.0%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ Free space: 178k (89.2%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
after (他にもいくつか無効化してます)
> /context
⎿
Context Usage
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛀ ⛀ ⛀ ⛶ claude-haiku-4-5-20251001 · 13k/200k tokens (6%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System prompt: 2.4k tokens (1.2%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ System tools: 9.8k tokens (4.9%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Custom agents: 73 tokens (0.0%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Memory files: 242 tokens (0.1%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛁ Messages: 8 tokens (0.0%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ Free space: 187k (93.7%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
builtinのツール名はこちらのリストから確認しましょう。
(12/12追記)
日本語版は若干古いので英語版も見比べてみると良いかもです。NotebookReadは消えました。
https://code.claude.com/docs/en/settings#tools-available-to-claude
"$schema": "https://json.schemastore.org/claude-code-settings.json"が過度な信頼は禁物ですがおすすめです
技術解説: Claude Codeはほぼ全てMCP
Claude Codeのビルドインツールは全てMCPサーバーとして実装されています。
以下のコマンドでMCPサーバーとして実際に起動してみましょう。
npx @modelcontextprotocol/inspector claude mcp serve
NotebookEditには説明として以下のようなMCP InitializerResult Instructionsが含まれています。
Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source. Jupyter notebooks are interactive documents that combine code, text, and visualizations, commonly used for data analysis and scientific computing. The notebook_path parameter must be an absolute path, not a relative path. The cell_number is 0-indexed. Use edit_mode=insert to add a new cell at the index specified by cell_number. Use edit_mode=delete to delete the cell at the index specified by cell_number.
これらはinitialize call時にシステムプロンプトに渡すように設定されており、Claude Codeはその指示をもとにシステムプロンプトにMCPサーバーの情報を追加しているようです。
コンテキスト削減やった人ならわかると思いますが、ツールを使ってもらうためにはそこそこの量の説明を加えるためツールというものは1つでも削減するだけでもかなりの削減が実現できます。
応用例: serena-mcp
serenaを利用するときはbuidtinツールと役割被っているので、全て無効化できて嬉しいかもですね。
{
"permissions": {
"deny": [
"Edit",
"Glob",
"Grep",
"Read",
"Write",
]
},
}
Discussion