Environment
- OS: Windows
- Eclipse Version: 2026-06 (4.40.0)
- Plugin Version: 0.21.0
Describe the bug
Opening a large persisted GitHub Copilot Agent conversation from the chat history can cause the Eclipse UI to become unresponsive.
The Eclipse error log repeatedly reports:
org.eclipse.swt.SWTError: No more handles
The exception occurs while GitHub Copilot is restoring/rendering chat turns, with the stack trace pointing into the Copilot chat UI, for example:
com.microsoft.copilot.eclipse.ui.chat.CopilotTurnWidget.createFooter(...)
com.microsoft.copilot.eclipse.ui.chat.CopilotTurnWidget...
com.microsoft.copilot.eclipse.ui.chat.ChatView...
The affected conversation is a long-running Agent conversation containing approximately:
- 200+ chat turns
- 700+ agent rounds
- 1,000+ tool calls
The persisted conversation file is approximately 1 MB in size.
The issue appears to be related to the amount of UI state restored rather than simply the size of the persisted JSON file.
As a diagnostic test, the same conversation was split into smaller, structurally unchanged conversation histories.
The smaller subsets can be restored and displayed by the Copilot Chat view, whereas restoring the complete conversation causes severe UI problems and eventually results in SWTError: No more handles.
This suggests that restoring a sufficiently large Agent conversation may create or retain too many SWT resources/widgets.
To Reproduce
Steps to reproduce the behavior:
-
Use GitHub Copilot Chat in Agent mode over an extended period.
-
Accumulate a large conversation containing many Agent rounds and tool calls.
-
Close or switch away from the conversation.
-
Open the conversation again from the Copilot chat history.
-
Wait while Copilot restores the persisted conversation.
-
Observe that the Copilot Chat view becomes very slow or unresponsive.
-
Check the Eclipse Error Log.
-
Observe repeated errors similar to:
org.eclipse.swt.SWTError: No more handles
with stack frames inside the Copilot chat UI, including:
com.microsoft.copilot.eclipse.ui.chat.CopilotTurnWidget.createFooter(...)
In the affected case, splitting the persisted conversation into smaller subsets allowed those subsets to be displayed successfully.
Expected behavior
Copilot should be able to restore large persisted Agent conversations without exhausting SWT resources or freezing the Eclipse UI.
The Chat view should ideally avoid creating an unbounded number of SWT controls while restoring conversation history.
Possible approaches could include lazy rendering, virtualization of older turns, disposing controls that are no longer visible, or limiting the number of expanded Agent/tool-call UI elements restored at once.
At minimum, an unusually large conversation should not cause:
SWTError: No more handles
or make the Eclipse UI unresponsive.
Screenshots
Not applicable.
The Eclipse Error Log and a sanitized persisted conversation can be provided if required.
Additional context
This was investigated by splitting the affected persisted conversation into smaller subsets while keeping the individual retained turn structures unchanged.
The smaller subsets could be restored successfully.
The complete conversation contains significantly more Agent/tool-call state than a normal chat conversation, including hundreds of Agent rounds and more than one thousand tool calls.
This may be relevant because Agent turns can contain considerably more UI state than the number of top-level chat turns suggests.
There are existing fixes related to performance and UI freezes with long conversations, but this case specifically results in SWT handle exhaustion while restoring/rendering persisted chat history.
A sanitized conversation history and the complete Eclipse stack trace can be provided for reproduction if needed.
Environment
Describe the bug
Opening a large persisted GitHub Copilot Agent conversation from the chat history can cause the Eclipse UI to become unresponsive.
The Eclipse error log repeatedly reports:
The exception occurs while GitHub Copilot is restoring/rendering chat turns, with the stack trace pointing into the Copilot chat UI, for example:
The affected conversation is a long-running Agent conversation containing approximately:
The persisted conversation file is approximately 1 MB in size.
The issue appears to be related to the amount of UI state restored rather than simply the size of the persisted JSON file.
As a diagnostic test, the same conversation was split into smaller, structurally unchanged conversation histories.
The smaller subsets can be restored and displayed by the Copilot Chat view, whereas restoring the complete conversation causes severe UI problems and eventually results in
SWTError: No more handles.This suggests that restoring a sufficiently large Agent conversation may create or retain too many SWT resources/widgets.
To Reproduce
Steps to reproduce the behavior:
Use GitHub Copilot Chat in Agent mode over an extended period.
Accumulate a large conversation containing many Agent rounds and tool calls.
Close or switch away from the conversation.
Open the conversation again from the Copilot chat history.
Wait while Copilot restores the persisted conversation.
Observe that the Copilot Chat view becomes very slow or unresponsive.
Check the Eclipse Error Log.
Observe repeated errors similar to:
with stack frames inside the Copilot chat UI, including:
In the affected case, splitting the persisted conversation into smaller subsets allowed those subsets to be displayed successfully.
Expected behavior
Copilot should be able to restore large persisted Agent conversations without exhausting SWT resources or freezing the Eclipse UI.
The Chat view should ideally avoid creating an unbounded number of SWT controls while restoring conversation history.
Possible approaches could include lazy rendering, virtualization of older turns, disposing controls that are no longer visible, or limiting the number of expanded Agent/tool-call UI elements restored at once.
At minimum, an unusually large conversation should not cause:
or make the Eclipse UI unresponsive.
Screenshots
Not applicable.
The Eclipse Error Log and a sanitized persisted conversation can be provided if required.
Additional context
This was investigated by splitting the affected persisted conversation into smaller subsets while keeping the individual retained turn structures unchanged.
The smaller subsets could be restored successfully.
The complete conversation contains significantly more Agent/tool-call state than a normal chat conversation, including hundreds of Agent rounds and more than one thousand tool calls.
This may be relevant because Agent turns can contain considerably more UI state than the number of top-level chat turns suggests.
There are existing fixes related to performance and UI freezes with long conversations, but this case specifically results in SWT handle exhaustion while restoring/rendering persisted chat history.
A sanitized conversation history and the complete Eclipse stack trace can be provided for reproduction if needed.