Skip to main content
The HyperProbe VS Code extension gives you a full probe management workflow without leaving your editor. You can insert new probes, watch their status update in real time as your application executes, inspect captured data, and clean up probes you no longer need — all from the HyperProbe panel in the Activity Bar.

The probes panel

Click the HyperProbe icon in the Activity Bar to open the panel. The panel has two main views:
  • Actions list — shows all probes you have created, their current status, and live/pending indicators.
  • Insert Action form — the form you use to create a new probe.
The toolbar at the top of the actions list lets you sort probes by filename or creation time, and filter by status using the filter icon.

Inserting a new probe

Click the + button in the HyperProbe panel (or navigate to the insert form from within the panel) to open the Insert Action form.
1

Select a probe type

Choose the type of probe you want to insert. The available types are:
TypeWhat it does
SnapshotCaptures local variables, watch expressions, and the call stack at a line of code.
LogInjects a log line with interpolated variable values without redeploying.
CounterCounts the number of times a specific line is reached.
Tic & TocMeasures elapsed time between two lines of code.
Custom MetricEvaluates and reports any numeric expression continuously.
2

Choose a source

Click Choose a source to open the source selector. Each source entry represents a unique combination of service, environment, and commit SHA — sourced from agents that are currently connected to the HyperProbe server.The selector displays each source as:
Service: my-service | Env: production | Commit: a1b2c3d
Select the source that matches the running instance you want to probe. If no sources appear, confirm that your SDK agent is running and connected to the server, and that your .hprc file contains the correct serviceId.
3

Set the filename and line number

Enter the relative path to the source file (for example, apps/api/src/handlers/users.ts) and the line number where the probe should fire. The extension uses these values to map the probe to the correct location in your source code.
4

Fill in type-specific fields

Depending on the probe type, additional fields appear:
  • Hit limit — the maximum number of times the snapshot is captured before the probe auto-expires. Accepts values from 1 to 20.
  • Lifetime — how long the probe stays active: An Hour or A Day.
  • Watch expressions — one or more variable names or expressions to evaluate when the snapshot fires (for example, user.id or order.items.length). Add multiple expressions using the + button.
5

Add a condition (optional)

The Condition field accepts any boolean expression written in your application’s language. The probe fires only when the expression evaluates to true at runtime.Examples:
user.id === 123
request.method === "POST" && body.amount > 1000
cart.items.length === 0
Leave the field empty to fire the probe unconditionally every time the line is reached.
6

Create the probe

Click Create. The probe is registered with the HyperProbe server immediately. It appears in the actions list and begins collecting data the next time that line executes in your running application.

Probe status

Each probe in the actions list displays a status label that reflects its current state:
StatusMeaning
ACTIVEThe probe is registered and collecting data.
INACTIVEThe probe is registered but paused. It does not fire until reactivated.
EXPIREDThe probe’s lifetime has elapsed and it is no longer active.
COMPLETEDThe probe reached its hit limit and stopped collecting.
ERRORThe probe encountered an error. Check the probe details for more information.
Use the filter icon in the toolbar to show or hide probes by status. The default view shows ACTIVE, COMPLETED, and EXPIRED probes.

Live indicator

Each ACTIVE probe shows a small indicator next to its filename and line number:
  • Green filled circle — the probe is live. At least one connected agent has registered the probe and is ready to fire it.
  • Orange outline circle — the probe is not yet live. It has been registered on the server but no agent has picked it up yet. This usually resolves within a few seconds once the agent syncs.

Toggling a probe active or inactive

Each probe in the ACTIVE or INACTIVE state shows a checkbox in the actions list. Check the box to activate a paused probe, or uncheck it to deactivate a running one. The state change takes effect immediately without recreating the probe.

Editing a probe

Open the context menu for any probe (the ... button on the right) and click View/Edit. The Insert Action form reopens with the probe’s current values pre-filled.
Saving an edited probe deletes the original probe and all its captured data, then creates a new probe with the updated settings. The extension shows a confirmation dialog before proceeding.

Deleting probes

To delete a single probe, open the context menu and click Delete. A confirmation dialog appears before the probe is removed. To delete all visible probes at once, click the trash icon in the actions list header. The deletion applies to all probes currently shown (respecting any active status filter).

Viewing captured data

Click any probe in the actions list to open the Snapshot Inspector (for Snapshot and Log probes). The inspector shows:
  • Metadata — the source service, probe ID, hit limit, condition, and status. Click Show more to expand the full details.
  • Hit pagination — navigate between individual captures using the arrow buttons. The hit counter shows which capture you are viewing out of the total collected so far.
  • Watch expressions — the values of any expressions you specified when creating the probe, displayed as an expandable tree.
  • Variables — all local variables captured at the probe’s line of code, organized by scope and browsable as an expandable tree.
  • Call stack — the full call stack at the moment of capture. Click any frame to inspect the variables in that scope.
For Log probes, the inspector displays the rendered log message for each hit rather than a variable tree.
Use the condition field and watch expressions together to reduce noise. For example, set a condition of user.role === "admin" and watch user.permissions to capture only the data you care about.