Proto Navigation

Navigate from .proto to implementation

Jump from Protocol Buffer definitions straight to your C# and Python service code. Press F12 and go.

Works with VS Code 1.85+ · Free and open source

Features

Smart Navigation

  • F12 Go to Definition
  • Cmd/Ctrl+F12 Go to Implementation
  • Alt/Option+F12 Peek Definition

Intelligent Search

  • Auto-discovers *Service.cs and *Service.py
  • Configurable search paths
  • Per-file service_file directive override

Developer Friendly

  • Zero configuration for standard projects
  • Smart caching for fast navigation
  • Detailed logging in Output panel

See it in action

Demo showing F12 navigation from proto file to C# implementation

Quick Start

1

Install

Install from the VS Code Marketplace or search "Proto Navigation" in Extensions.

2

Open a .proto file

The extension activates automatically on any .proto file. Zero config needed for standard project layouts.

3

Navigate

Press F12 on a service method to jump to C# or Python implementation. Customize paths via Command Palette.

Keyboard Shortcuts

Shortcut Action
F12 Go to Definition
Cmd/Ctrl+F12 Go to Implementation
Alt/Option+F12 Peek Definition

Release History

Security

  • Upgraded fast-uri override to ^4.1.4 (from ^3.1.5) to remediate four high-severity advisories where crafted URIs bypass host allowlist/SSRF checks (transitive via webpackschema-utilsajv):
    • GHSA-5jgf-p345-68v8 (high) — host confusion via skipped IDN canonicalization on scheme-relative references
    • GHSA-f65p-4m7j-42xc (high) — SSRF via malformed IPv6 normalization
    • GHSA-fph4-wmhf-6fwf (high) — SSRF via repeated hostname percent-decoding
    • GHSA-jqff-g426-hqxp (high) — host confusion via percent-encoded scheme normalization
  • Added browserslist override ^4.28.7 (dev-only transitive via webpack) to remediate two high-severity advisories:
    • GHSA-c83g-rgw3-j3cx (high) — unbounded memory growth via distinct query results leading to OOM
    • GHSA-73wf-gq9-2v4g (high) — uncaught crash via prototype write through untrusted browserslist-stats.json