protolint for Visual Studio Code
Integrates protolint into VS Code.
⚠️ Warning
protolint is designed to work only with files on disk. To implement the
lint-on-type functionality in VS Code, the text of used .proto is saved in a
subdirectory inside the system's temporary directory. The subdirectory path is
displayed in the extension output after activation. This subdirectory is
periodically cleaned up.
It leads to several specific behaviors, such as:
- Some
.proto files are stored not only in their usual directories.
- Additional operations of writing and reading from disk occur.
If this is unacceptable for your workflow, please refrain from using this
extension.
After uninstalling this extension, you may need to manually delete any remaining
files from the system's temporary folder.
📀 Installation
To use this extension, you need to install protolint via any convenient
method. Follow instructions at
https://github.com/yoheimuta/protolint#installation.
The minimum recommended version is 0.55.4. Older versions may have issues with
the autofix feature.
⚙️ Configuration
protolint.command
⚙️protolint.command setting specifies the command to run protolint or the
absolute path to its executable file.
If protolint is added to the system's PATH, typically the default
configuration should work correctly.
Relative paths must start with a ./ and are supported only for Folder
settings. In that case, the path will be resolved relative to the root of the
corresponding Workspace Folder.
For example, if you've installed protolint into your project through npm,
you can set the following value for the Workspace Folder setting:
./node_modules/protolint/bin/protolint
On Windows, you can omit the .exe file extension, so the example configuration
works across all operating systems.
✨ Features
🔍 Lint-on-Type
Diagnostics generated by protolint update automatically when editing a
.proto file without saving it.
The diagnostics for untitled protobuf documents is provided only when there is a
protobuf language extension active in VS Code and the document language ID is
"proto3".
💡 Quick Fixes
Some problems allow applying granular quick fixes directly.

💡 Autofix
protolint lint -fix corrections are applied to the selected document while
keeping the original .proto file unchanged on disk.
Use the editor command protolint.editorAutofix to autofix the active document.
📐 Support for .protolint.yaml
The extension respects the .protolint.yaml configuration file but has some
limitations:
- File name must exactly match
.protolint.yaml (case-sensitive).
- Only supported in single-folder and multi-root workspace modes, considering
only
.protolint.yaml located in the root of a Workspace Folder. For
multi-root workspaces, only the closest Workspace Folder’s .protolint.yaml
is used.
- Untitled protobuf documents do not inherit these configurations.
Different versions of the protolint binary can be set up per Workspace Folder.
💬 Language Status Item
A language status item shows the protolint version used for the active
.proto file.

📄 License
This project is licensed under the terms of the MIT license.
📜 Attribution
This extension uses the utility protolint.
The icon design was inspired by the TSLint logo.
🌟 Help Us Grow
If you found this extension useful, please rate it on the Visual Studio
Marketplace and give us a star on GitHub. Your support helps more people
discover and benefit from our tool. Thank you!
🤝 Contributing
Will be documented later.