Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

feat: disable specific built-in feature (or change it's config)

Open
#597 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
55/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
devtools, security

Research direction

Start by tracing the builtinDevTools configuration and the configResolved hook to find where built-in features, especially terminal, are registered. Compare that path with terminalsVite({ shell: '/usr/bin/nologin' }); done means users can keep other built-in or package devtools enabled while excluding terminal through configuration.

Written by the indexing model from the issue text.

Description

enhancement
Clear and concise description of the problem

Hello and thanks to everyone!

I would like to disable the terminal feature. As of today, the only way to do so is by set

devtools: {
      builtinDevTools: false,
},

but this disables all the vite devtools entirely (even the ones from @vitejs/devtools-vite package).

I understand terminal is not active if no authentication is provided, but once it is (and I may want to open devtools for other reasons) I still feel like having it it's a security hole that must be closed. (such terminal is capable of doing too much thing, everything actually - install packages, sudo, reading envs and .bash_history as well as ssh into other machines).

I understand every hole I described can be done in many different way just with a bad package, but at least I would not like to have a terminal in my browser window and potentially accessibile in the network.

I tried to write a custom plugin that hook into the configResolved function to intercept the configuration, but I only managed to entirely disable the tools and I could not manage to reach the configuration.

Suggested solution

From a config perspective, it may be done in different ways, the one I prefer is something like

devtools: {
  builtinDevTools: true,
  excludeBuiltIn: ['terminal']
},
Alternative

Another way can be to override that specific plugin configuration

import { terminalsVite } from '@devframes/plugin-terminals/vite'
//...
plugins: [
  ...terminalsVite({
    shell: '/usr/bin/nologin'
  }),
]
Additional context

I never went that deep into vite: I never needed that (and that thanks to your awesome work, btw!), so I don't know that much of vite internal structure, but if the leading team decides this can be a feature, I can get my hands on it and try to prepare a PR (I feel like it's a small if somewhere, just I don't know where this "somewhere" is)

Validations
Dominant language
TypeScript
Stars
1.2k
Forks
92
Avg merge
1d 15h
Merged PRs (30d)
22

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from vitejs/devtools

All issues in vitejs/devtools

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.