denoland/deno · error
Deno kernel already exists at {}, run again with `--force` t
Error message
Deno kernel already exists at {}, run again with `--force` to overwrite it What it means
`deno jupyter --install` writes a kernel spec to <user-data-dir>/kernels/<name>/kernel.json. By default it will not overwrite an existing kernel spec (named 'deno' unless --name was given); if kernel.json already exists and --force was not passed, installation aborts with this error.
Source
Thrown at cli/tools/jupyter/install.rs:152
maybe_name: Option<&str>,
maybe_display_name: Option<&str>,
force: bool,
) -> Result<(), AnyError> {
let user_data_dir = get_user_data_dir()?;
let kernel_name = maybe_name.unwrap_or("deno");
let kernel_spec_dir_path = user_data_dir.join("kernels").join(kernel_name);
let kernel_spec_path = kernel_spec_dir_path.join("kernel.json");
std::fs::create_dir_all(&kernel_spec_dir_path).with_context(|| {
format!(
"Failed to create kernel directory at {}",
kernel_spec_dir_path.display()
)
})?;
if kernel_spec_path.exists() && !force {
bail!(
"Deno kernel already exists at {}, run again with `--force` to overwrite it",
kernel_spec_dir_path.display()
);
}
let display_name = maybe_display_name.unwrap_or("Deno");
let current_exe_path = kernel_exe_path()?.to_string_lossy().into_owned();
// TODO(bartlomieju): add remaining fields as per
// https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs
let json_data = json!({
"argv": [current_exe_path, "jupyter", "--kernel", "--conn", "{connection_file}"],
"display_name": display_name,
"language": "typescript",
});
let f = std::fs::File::create(&kernel_spec_path).with_context(|| {
format!(View on GitHub (pinned to 9ad36f7a2c)
Solutions
- Re-run with `deno jupyter --install --force` to overwrite the existing spec
- Or remove the old kernel dir first: delete <user-data-dir>/kernels/<name>/ (e.g. ~/.local/share/jupyter/kernels/deno/)
- Or install under a different name with `--name <other>` to keep both
Example fix
# before deno jupyter --install # Deno kernel already exists at ... # after deno jupyter --install --force # or rm -r ~/.local/share/jupyter/kernels/deno && deno jupyter --install
Defensive patterns
Strategy: validation
Validate before calling
# make kernel install idempotent in setup scripts: deno jupyter --install --force # overwrites safely instead of failing
Try / catch
Catch 'Deno kernel already exists'; decide policy — re-run with --force (overwrite) or skip if the existing spec already points at the current deno binary.
Prevention
- Use `--force` in Dockerfiles and setup scripts that re-run
- Reinstall the kernel after `deno upgrade` so kernel.json points at the current binary
- Use `--name` to keep multiple kernels side by side
When it happens
Trigger: Running `deno jupyter --install` a second time; switching Deno versions and reinstalling the kernel; a custom --name colliding with an existing kernel entry.
Common situations: Re-running setup scripts/Dockerfiles that install the kernel on every build; multiple Deno installations sharing one Jupyter user dir.
Related errors
- REPL thread error: {}
- REPL thread failed to start
- Unexpected second argument to Deno.bench()
- Unexpected third argument to Deno.bench()
- Unexpected 'fn' field in options, bench function is already
AI-assisted analysis of denoland/deno@9ad36f7a2c (2026-08-20).
Data as JSON: /api/errors/1573d94b933195df.
Report an issue: GitHub.