JetBrains / JetBrains/mcp-server-plugin
IntelliJ Codex/MCP companion tool surface collapses during session; exact file-read tool disappears
- Dominant language
- Kotlin
- Stars
- 134
- Forks
- 42
- PR merge metrics
- No merged PRs in 30d
Description
**Environment**
- Project: `/home/chris/Projects/Tech-Ascension-Workspace`
- IntelliJ IDEA open with the project open
- Indexing: `false`
- Codex/IntelliJ MCP companion integration
- MCP server configured as `idea_http_server` / IntelliJ companion
- Shell intentionally disabled, so workflows depend on MCP file-read tools
- Expected read tool from config/tool allowlist: `get_file_text_by_path`
**Symptoms**
- The Codex-visible `idea_http_server` tool surface changes during the session and can collapse from a broad surface to a partial one.
- Observed visible tool counts across attempts: `2`, `9`, and `15`.
- When collapsed, `get_file_text_by_path` is missing.
- Restarting IntelliJ temporarily restores a larger tool surface.
- Starting a new Codex chat without restarting IntelliJ does not restore the full tool surface.
- The IDE-side companion overview still reports broad categories:
- editor/navigation
- project/file
- build/test
- debug
- VCS
- diagnostics/processes
- general tools
**Expected behavior**
- The Codex-visible MCP tool surface should stay aligned with the IDE-side companion registry.
- If IntelliJ’s companion registry refreshes dynamically, Codex should renegotiate and see the updated tool list without requiring an IntelliJ restart.
- `get_file_text_by_path` should remain available if it is still part of the supported surface, or the replacement exact-file-read tool should be clearly exposed and stable.
**Actual behavior**
- The IDE-side companion registry reports a broad tool set, but Codex only sees a partial subset.
- The visible tool surface appears to collapse or change during the same IntelliJ session.
- New Codex chats do not force the full tool list to reappear.
- The mismatch blocks workflows that require exact file reads, especially instruction-file maintenance in hidden dot folders such as `.agents/skills/**/SKILL.md`.
**Evidence**
- Project open in IntelliJ: `/home/chris/Projects/Tech-Ascension-Workspace`
- `indexing: false`
- Companion overview reports broad tool categories, including editor/navigation, project/file, build/test, debug, VCS, diagnostics, and general tools.
- Earlier IDE log evidence showed:
- `FeatureRegistry[Tool] - Added Tools: 127`
- `ToolListChangedNotification`
- Visible `idea_http_server` tool counts observed during the session: `2`, `9`, `15`
- `get_file_text_by_path` was missing when the surface was collapsed
- Restarting IntelliJ temporarily restored a larger tool surface
- A new Codex chat without restarting IntelliJ did not restore the full tool surface
**Reproduction steps**
1. Open IntelliJ with `/home/chris/Projects/Tech-Ascension-Workspace`.
2. Confirm the project is open and indexing is false.
3. Observe the Codex-visible `idea_http_server` tool list.
4. Restart IntelliJ.
5. Observe that more tools appear temporarily.
6. Continue the session and start a new Codex chat without restarting IntelliJ.
7. Observe that the visible tool surface can collapse again.
8. Compare the IDE-side companion overview against the Codex-visible tool list.
9. Check whether `get_file_text_by_path` is present.
**Workarounds tried**
- Restarting IntelliJ
- Starting a new Codex chat without restarting IntelliJ
- Rechecking the companion overview after the collapse
**Questions**
1. How can ACP/MCP capability renegotiation be forced without restarting IntelliJ?
2. Is this a known issue with dynamic tool registry refresh or session reuse?
3. What logs are needed to diagnose why Codex only sees a partial tool set?
4. Was `get_file_text_by_path` renamed, gated, or removed in the current plugin build?
5. Is there a supported exact file-read tool that should replace `get_file_text_by_path`?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by comparing the IDE-side companion registry with the Codex-visible idea_http_server list, focusing on FeatureRegistry[Tool] and ToolListChangedNotification evidence. Check whether get_file_text_by_path is gated, renamed, or omitted during refresh. Done means the cause of the changing tool surface is identified and the supported renegotiation or stable exact-file-read behavior is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kotlin
- Domain
- api, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100