Summary
this happens when you have a custom keymap in insert mode that closes a window in insert mode and return back to normal mode. Something like this:
[keys.insert]
C-q = ["wclose", "normal_mode"]
It only causes a panick when doing it to the last remaining window since there is no where to go back to normal mode.
I tested and it also applies to placing any other keybind that follows wclose. Like trying to write after a window close. Yeah i know not very practical.
I then also tried to do the same in normal the modified bind where i attempt to write after a window close on the last window and it also panicks.
So it applies to any action that is executed where there is a chance a window may no longer be available to carry it out.
Maybe helix should stop processing key maps if there is no window available and just exit cleanly or?
Reproduction Steps
I tried this:
I tried Ctrl-q in insert mode when i have only one window remaining
I expected this to happen:
it to just close. Cleanly exit like it does when its normal mode. "keys.normal.c-q"="wclose"
Instead, this happened:
the editor panicks on exit
thread 'main' panicked at helix-view/src/tree.rs:327:18:
internal error: entered unreachable code
stack backtrace:
0: 0x5593791f67d2 -
1: 0x55937853f343 -
2: 0x5593791f5b9f -
3: 0x5593791f6633 -
4: 0x5593791f6138 -
5: 0x559378f5d1c2 -
6: 0x5593791f588f -
7: 0x559379239075 -
8: 0x559379239009 -
9: 0x55937923e91c -
10: 0x55937853dcdf -
11: 0x55937853f01b -
12: 0x559379005d87 -
13: 0x559378bba10c -
14: 0x559378bb0acb -
15: 0x559378bb1081 -
16: 0x559378b86b50 -
17: 0x559378bc3862 -
18: 0x55937846bfaa -
19: 0x5593784ced0d -
20: 0x5593784c5187 -
21: 0x55937848b826 -
22: 0x5593784d0fc5 -
23: 0x7fc8b2027741 -
24: 0x7fc8b2027879 - __libc_start_main
25: 0x559378462a25 -
26: 0x0 -
Helix log
~/.cache/helix/helix.log not very useful contains only lsp logs. the lsp is also not left as a zombie process on panick
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"initialize\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/foldingRange\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentSymbol\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/formatting\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/completion\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/hover\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentLink\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/semanticTokens/full\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/prepareRename\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/rename\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"initialized\"\n"
2026-07-28T09:09:41.652 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didOpen\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didChange\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didSave\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didClose\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeConfiguration\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeWorkspaceFolders\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToJson\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToToml\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/listSchemas\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/associatedSchema\"\n"
2026-07-28T09:09:41.653 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"taplo/associateSchema\"\n"
2026-07-28T09:09:41.665 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: LSP server listening transport=\"stdio\"\n"
2026-07-28T09:09:43.105 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:configuration_change:initialize: failed to fetch catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog\n"
2026-07-28T09:09:43.105 helix_lsp::transport [ERROR] taplo err <- "\n"
2026-07-28T09:09:43.105 helix_lsp::transport [ERROR] taplo err <- "Caused by:\n"
2026-07-28T09:09:43.105 helix_lsp::transport [ERROR] taplo err <- " data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:09:43.106 helix_lsp::transport [ERROR] taplo err <- "ERROR taplo:configuration_change:initialize: failed to add schemas from catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:09:43.106 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_open: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:09:43.106 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:links: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:09:53.077 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_close: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:09:56.235 helix_lsp::transport [ERROR] taplo err <- "ERROR operation failed error=got exit message without shutdown notice\n"
2026-07-28T09:09:56.237 helix_lsp::transport [ERROR] Could not close request on a closed channel (id=Num(2))
2026-07-28T09:09:56.237 helix_lsp::transport [ERROR] taplo err: <- StreamClosed
2026-07-28T09:10:04.989 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"initialize\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/foldingRange\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentSymbol\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/completion\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/formatting\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/hover\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentLink\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/semanticTokens/full\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/prepareRename\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/rename\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"initialized\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didOpen\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didChange\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didSave\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didClose\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeConfiguration\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeWorkspaceFolders\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToJson\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToToml\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/listSchemas\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/associatedSchema\"\n"
2026-07-28T09:10:04.990 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"taplo/associateSchema\"\n"
2026-07-28T09:10:05.003 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: LSP server listening transport=\"stdio\"\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:configuration_change:initialize: failed to fetch catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- "\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- "Caused by:\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- " data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- "ERROR taplo:configuration_change:initialize: failed to add schemas from catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_open: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:10:05.569 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:links: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:10:06.201 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:completion: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:10:06.917 helix_lsp::transport [ERROR] err: <- Other(failed to send a message to server
Caused by:
channel closed)
2026-07-28T09:10:06.917 helix_lsp::transport [ERROR] taplo err: <- StreamClosed
2026-07-28T09:11:36.985 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"initialize\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/foldingRange\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentSymbol\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/formatting\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/completion\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/hover\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/documentLink\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/semanticTokens/full\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/prepareRename\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"textDocument/rename\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"initialized\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didOpen\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didChange\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didSave\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"textDocument/didClose\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeWorkspaceFolders\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"workspace/didChangeConfiguration\"\n"
2026-07-28T09:11:36.986 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToJson\"\n"
2026-07-28T09:11:36.987 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/convertToToml\"\n"
2026-07-28T09:11:36.987 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/listSchemas\"\n"
2026-07-28T09:11:36.987 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered request handler method=\"taplo/associatedSchema\"\n"
2026-07-28T09:11:36.987 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: registered notification handler method=\"taplo/associateSchema\"\n"
2026-07-28T09:11:36.999 helix_lsp::transport [ERROR] taplo err <- " INFO taplo: LSP server listening transport=\"stdio\"\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:configuration_change:initialize: failed to fetch catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- "\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- "Caused by:\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- " data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- "ERROR taplo:configuration_change:initialize: failed to add schemas from catalog error=error decoding response body: data did not match any variant of untagged enum SchemaCatalog self.root=root:///\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_open: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:11:38.777 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:links: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:14:38.228 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_change: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:14:38.234 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:completion: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:14:38.479 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:links: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:16:37.268 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:document_change: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:16:37.519 helix_lsp::transport [ERROR] taplo err <- " WARN taplo:links: using detached workspace document_url=file:///home/benexl/.config/helix/config.toml\n"
2026-07-28T09:19:08.320 helix_lsp::transport [ERROR] taplo err <- "ERROR operation failed error=got exit message without shutdown notice\n"
2026-07-28T09:19:08.323 helix_lsp::transport [ERROR] Could not close request on a closed channel (id=Num(5))
2026-07-28T09:19:08.323 helix_lsp::transport [ERROR] taplo err: <- StreamClosed
Platform
Linux
Terminal Emulator
kitty
Installation Method
AUR
Helix Version
latest git commit
Summary
this happens when you have a custom keymap in insert mode that closes a window in insert mode and return back to normal mode. Something like this:
It only causes a panick when doing it to the last remaining window since there is no where to go back to normal mode.
I tested and it also applies to placing any other keybind that follows
wclose. Like trying to write after a window close. Yeah i know not very practical.I then also tried to do the same in normal the modified bind where i attempt to write after a window close on the last window and it also panicks.
So it applies to any action that is executed where there is a chance a window may no longer be available to carry it out.
Maybe helix should stop processing key maps if there is no window available and just exit cleanly or?
Reproduction Steps
I tried this:
I tried
Ctrl-qin insert mode when i have only one window remainingI expected this to happen:
it to just close. Cleanly exit like it does when its normal mode.
"keys.normal.c-q"="wclose"Instead, this happened:
the editor panicks on exit
thread 'main' panicked at helix-view/src/tree.rs:327:18:
internal error: entered unreachable code
stack backtrace:
0: 0x5593791f67d2 -
1: 0x55937853f343 -
2: 0x5593791f5b9f -
3: 0x5593791f6633 -
4: 0x5593791f6138 -
5: 0x559378f5d1c2 -
6: 0x5593791f588f -
7: 0x559379239075 -
8: 0x559379239009 -
9: 0x55937923e91c -
10: 0x55937853dcdf -
11: 0x55937853f01b -
12: 0x559379005d87 -
13: 0x559378bba10c -
14: 0x559378bb0acb -
15: 0x559378bb1081 -
16: 0x559378b86b50 -
17: 0x559378bc3862 -
18: 0x55937846bfaa -
19: 0x5593784ced0d -
20: 0x5593784c5187 -
21: 0x55937848b826 -
22: 0x5593784d0fc5 -
23: 0x7fc8b2027741 -
24: 0x7fc8b2027879 - __libc_start_main
25: 0x559378462a25 -
26: 0x0 -
Helix log
~/.cache/helix/helix.log not very useful contains only lsp logs. the lsp is also not left as a zombie process on panick
Platform
Linux
Terminal Emulator
kitty
Installation Method
AUR
Helix Version
latest git commit