Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>SFDXLabs Salesforce ToolkitNew to Visual Studio Code? Get it now.
SFDXLabs Salesforce Toolkit

SFDXLabs Salesforce Toolkit

SFDXLabs

|
12 installs
| (0) | Free
Plan Salesforce changes, deploy safely, enforce CI policies, analyze code, document schema, inspect org health, and work with SOQL, GraphQL, metadata, and data inside VS Code.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SFDXLabs Salesforce Toolkit

SFDXLabs Salesforce Toolkit icon

Explore Salesforce schema, understand automation and access, compare orgs, work with records, and investigate org activity from Visual Studio Code.

The toolkit uses your installed Salesforce CLI and existing org logins. Connected tools identify their target org; local tools such as Flow Visualizer and the formatters can work offline.

Built primarily with AI assistance and offered as-is. Automated checks cover the code, but real-world org coverage is still growing. Review proposed changes and try unfamiliar write workflows in a sandbox first. See the MIT licence.

Quick start · Find a tool · Org & Tools · Settings · Troubleshooting · Development

For release highlights, see the changelog.

Quick start

Requirements

  • VS Code 1.90 or later.
  • Salesforce CLI (sf) available to the VS Code extension host.
  • An authenticated Salesforce org for connected workflows.
  • A Salesforce DX project containing sfdx-project.json.
  • A trusted workspace for Salesforce CLI execution.

Open your first workspace

  1. Open your Salesforce project in VS Code.
  2. Open SFDXLabs Salesforce Toolkit from the activity bar.
  3. Open Toolkit Home and choose or verify your target org.
  4. Run Environment Doctor to check the project, CLI, connection and API version.
  5. Use Schema → Load objects from an org to choose objects when you need schema-aware queries or documentation.
  6. Choose a featured tool, open a section’s More tools…, or use Find a tool… to search the full catalogue. In the Command Palette, search for Find Toolkit Action.

Multi-root workspaces and Salesforce projects nested inside a workspace are supported.

Find a tool

I want to… Start here
Check my org and pin shortcuts Toolkit Home
Export object and field documentation Schema → Generate Data Dictionary
Understand object relationships Schema → Relationship Explorer
Investigate a field before changing it Field Overview, Where Used, Analyse Field Usage and Dependency Viewer
Query, edit or export records Data → SOQL & Record Workspace
Import records or seed related data Data → Import Records from CSV or Datasets & Seeding
Read a Flow or inspect object automation Automation → Flow Visualizer or Object Automation Map
Compare schema, code or XML between orgs Compare Orgs
Compare email templates or library file presence Compare Orgs → Compare Email Templates / Compare Library Files
Understand why a user has permission Users & Access → Open Security 360 → select a user → Trace grants
Create a user with selected access Users & Access → Clone User
Review or activate access policies Users & Access → User Access Policies
Run Apex, tests or investigate logs Apex & Logs
Build and retrieve a manifest Org & Tools → Manifest Builder
Investigate limits, jobs or Setup changes Org & Tools → Org Health & Limits / Setup Audit Trail
See every metadata change in a time window Org & Tools → Changed Metadata, through More tools…
Format JSON or a formula Org & Tools → Formatters, through More tools…

Only featured tools appear directly in each sidebar section. More tools… opens its searchable catalogue. Right-click a tool to add it to Favourites; favourites are shared with Home and the action picker. Collapse All folds the sidebar.

Home and org selection

Toolkit Home shows the active org, environment, connection details, useful counts, limits, licence availability and recent guarded operations. Unavailable statistics are labelled rather than shown as zero.

  • Use Edit favourites to choose and reorder tool shortcuts.
  • Use Add shortcut… to pin a loaded object, saved SOQL favourite or local Flow. Their detail pages also offer Pin to Home.
  • Object and query shortcuts retain their project and org. Saved queries open as drafts; they do not run automatically.
  • Stats load while Home is open and are cached for up to five minutes. Refresh stats requests a fresh snapshot.

Switch org changes the workspace target and loaded schema. Existing query, comparison and API workspaces keep their displayed target; changing the workspace default does not redirect an in-flight operation. Check the org shown on the page before running it.

Schema

Load and explore objects

Load only the objects you need. Choose standard/custom objects, a manual list or a saved selection. Generated share, history and change-event companions can be excluded.

The schema header shows the org and loaded object/field counts. Use Add or remove objects…, Reload from org, or Load a different org… to manage the session. Saved selections contain object names and org identifiers, never credentials. Cached schema is separated by org ID, authenticated user and API version.

Object and field details include descriptions, formulas, defaults, picklists, relationship properties and available capabilities. Copy an API name or starter SOQL, jump to matching local XML, and search/filter the tree.

Data Dictionary

Generate Data Dictionary and Export Loaded Dictionary open the same setup and preview workspace.

  • Use loaded schema or choose another org and object subset.
  • Export one row per field or per object. Start with Admin, Developer or Documentation columns, reorder them, and save presets.
  • Search and inspect the preview. Preview filters do not reduce the selected export scope.
  • Export CSV, Markdown or Full schema JSON. CSV/Markdown use your column order; JSON retains the selected objects’ full metadata.
  • Review snapshot identity, API version, retrieval times and missing descriptions. Retry unavailable objects or description reads independently.

Exports include a coverage summary and Report Centre manifest. Files are staged before publication, so a cancelled export leaves the previous completed set intact. Timestamped exports are optional.

Relationship Explorer

View relationships between loaded objects on a dotted canvas. Drag objects to arrange them, pan the background, zoom, search, or navigate with the overview map. Positions are remembered; Reset layout restores the initial arrangement.

Select an object for its metadata and incoming/outgoing relationships. Select a connector for the field, relationship type, requiredness, endpoints and SOQL traversal names.

  • Solid: master-detail.
  • Dashed: lookup, including polymorphic relationships.
  • Arrows and moving pulses point from the referencing object to the referenced object.

Pause motion is remembered, and reduced-motion preferences are respected. Only relationships between loaded objects appear.

Field impact and dependencies

Use these tools together when assessing a field change:

Tool What it checks
Where Used / Safe Delete Check Local source and available loaded-schema references, scoped to the object and field.
Dependency Viewer Dependencies reported by the org’s Tooling API, including components absent from the local project.
Analyse Field Usage How many visible records populate selected fields, with a configurable rare-use threshold.
Field Overview A single starting point for references, population, explicit field grants and supported org dependencies.

Where Used groups results by file with source links, snippets, search and type/source filters. This field only excludes known references to other objects; Unresolved only shows matches whose object could not be established.

Right-click a field in the Schema tree or an objects/<Object>/fields/*.field-meta.xml file in VS Code’s Explorer. The file action, SFDX Labs: Where Used, works without loading an org schema.

Dependency Viewer separates Uses these components from Used by these components. Follow up to three levels, inspect traversal paths, change the root component, or use Back/Forward to revisit scans. Refresh reads the org again; complete scans can be reused briefly. Find local source opens a matching project file when available.

Analyse Field Usage supports saved scans, compatible comparisons and retries for failed queries. Unsupported or failed measurements remain distinct from empty fields.

Coverage depends on the source, schema and API available. Dynamic references can remain unresolved or absent. An empty result is not proof that deletion is safe.

Source-editor shortcuts

In Apex, SOQL, XML, JavaScript, TypeScript or HTML, select a schema reference and right-click SFDX Labs:

  • Where Used.
  • Show Object / Field Details.
  • Find Access Grant Sources.

Qualified references such as Account.Customer_Tier__c, Schema.Account.Name and @salesforce/schema/Account.Name can resolve directly. Ambiguous names offer a choice or manual API-name entry. Arbitrary expressions and relationship chains are not inferred.

Field Manager and data quality

Field Manager creates fields individually or from pasted tables and edits supported attributes in local .field-meta.xml files. Bulk editing highlights changed rows; unsupported attributes remain preserved. New fields include a manifest and do not overwrite existing files. Changes are not deployed automatically.

Run Data Quality Audit checks missing documentation/help text, empty picklists, missing relationship names and duplicate labels. Document them opens an editable worklist for findings with local source; unavailable source files are listed separately.

Data

SOQL & Record Workspace

Use multiple builder or free-form query tabs against the displayed org.

  • Reorder Selected fields by dragging, move buttons or Alt+↑/↓. Re-run to update results and export column order. Id remains selected for record identity.
  • Build nested Match all / Match any conditions with searchable field selection and type-aware values. Advanced expressions remain available in WHERE expression mode.
  • Add multiple query sort rules, including direction and empty-value placement. Query ordering applies before LIMIT; sorting a result column reorders the records already returned.
  • Condition and sort field pickers browse like the Fields panel: a lookup's › opens its parent's fields, breadcrumbs step back, and up to five relationship levels are available. Type a dotted path such as Account.Na to jump into a relationship.
  • Browse parent relationships, add related-record subqueries, validate/format SOQL, inspect a query plan, and save recent/favourite queries.
  • Edit supported single-object results inline. Review changes before a guarded update; failed and unattempted edits remain available after partial success.
  • Export all returned records as CSV, JSON, SpreadsheetML or tab-separated clipboard text, even when the visible grid is limited.

The result grid is bounded to 1,000 rows and 4 MiB. Tabular exports flatten relationship values; JSON preserves the nested response. Discard edits clears pending edits, and Escape reverts the active cell.

CSV imports and Bulk API jobs

Import Records from CSV supports Bulk API 2.0 Insert, Update and Upsert. Move through Source, Configure, Map columns, Review and Results. Search or filter mappings, choose fields with the same keyboard-accessible picker as the SOQL workspace, explicitly skip unwanted columns, validate the full file and confirm the target before submission. Mapping drafts stay with the same source file and org; long mapping lists and result previews are paginated. Optional blank-to-null conversion and private reusable recipes are available. From Results, Start new import returns to Source; Recent imports keeps up to 20 known jobs for this org with operation, object, date, filename and saved counts where available. Expand an entry to refresh its status or open the Bulk monitor; unavailable details remain marked as unknown. Opening history reads only local metadata and does not query Salesforce.

Monitor Bulk API Job shows processing counts and terminal failures/unprocessed rows. When Salesforce returns enough source data, Prepare rows for retry creates a private CSV and returns through the usual mapping and confirmation steps.

Datasets and seeding

  • Export Relationship Dataset: search and reorder fields, build conditions and ordered sort rules or use advanced SOQL, preview root and related records, then export sObject tree JSON and an ordered import plan.
  • Import Relationship Dataset: review a tree plan or ordered JSON files in a dedicated workspace. Inspect object/record counts, file previews and visual reference links; move standalone files earlier or later and resolve missing, duplicate or out-of-order references before confirmation. Submission uses a private snapshot of the reviewed data. Interrupted attempts remain flagged to prevent accidental duplicate imports.
  • Create / Run Sandbox Seed Recipe: save a reviewed query and reopen it for preview before exporting or importing. Each run uses a new output directory.
  • Create Anonymized Dataset: preview deterministic replacements for selected string-like fields before CSV export. IDs remain for correlation; review the output before sharing.

Seed import review supports up to 100 JSON files, 8 MiB per file and 20 MiB in total. Plan file paths must stay inside the dataset folder. This review checks local structure and references; Salesforce validates permissions and record values during import.

Dataset exports are staged before publication. Preview/root-record limits do not include all related child records; Salesforce tree-export limits still apply.

Automation

Flow Visualizer

Open Automation → Flow Visualizer, an active .flow-meta.xml editor, or a Flow file’s context action. The visualizer reads local metadata, including unsaved editor changes when opened or refreshed.

  • Search by label, API name or element type; jump to selected steps and navigate through the overview map.
  • Pan without canvas boundaries and zoom around the pointer. Arrow keys pan; Home fits the diagram.
  • Follow decision outcomes, scheduled paths, loop returns and dashed fault connectors. Loop return lanes are labelled Next iteration.
  • Select a step for plain-language settings, grouped conditions, assignments, screen components and Transform mappings. Expand Technical details or open the XML for exact metadata.
  • Use Mermaid code and Copy Mermaid to reuse the displayed diagram elsewhere.
  • Use Compare version… with a second local Flow XML file to inspect added, removed and changed elements. XML diff opens both files in VS Code.

Current Flow Builder elements keep their Flow Builder names and icons: Wait for Amount of Time, Wait Until Date, Wait for Conditions, Collection Filter, Collection Sort, Recommendation Assignment, Run Agent, Email Alert, Apex Action and Apex Action (Legacy), Add Prompt Instructions, Experiment paths and legacy Steps. Auto-layout Groups are drawn as labelled containers around their elements and exported as Mermaid subgraphs. Asynchronous action timeout paths are labelled Timeout.

Lint findings link to their steps. Refresh updates the displayed snapshot and clears a version comparison. Mermaid export describes the current displayed version. Subflows and orchestration stages remain single elements; unsupported metadata and incomplete paths appear in diagram notes.

Object Automation Map

Explore a local object’s automation with the same canvas controls and a detailed inspector. Review entry conditions, status, record operations, actions, schedules and validation messages; open source or jump into Flow Visualizer.

  • Dashed arrows connect an object to its attached automation: Flows (including Process Builder), Apex triggers, validation, workflow, approval, assignment, auto-response, escalation and duplicate rules, and roll-up summaries.
  • Solid arrows follow subflow calls, Flow Apex actions and Apex classes referenced by triggers and handlers. Fainter arrows are calls inferred from Apex source.
  • Dotted arrows on the left show automation elsewhere that reads or changes the object: Flow record steps, workflow field updates, formula relationships, roll-up summaries and Apex SOQL/DML.
  • Select a card for Records it works with, Called by and Reached from, which traces a called Flow or class back to the automation that starts it.
  • Moving pulses show link direction. Pause motion and reduced-motion support are available.

Phase groups and card positions do not establish execution order, and animation is not a live execution trace. The map scans configured package directories and reuses unchanged metadata. Object names are matched without regard to case. Apex references are inferred from source: types declared in other files, SOQL built at run time and custom trigger frameworks can be missed.

Lint and cleanup

Lint All Flows checks local metadata for issues such as missing fault paths, queries/DML inside loops, hard-coded IDs, unreachable steps and same-object after-save update risks.

Clean Up Inactive Local Flows moves reviewed files to Trash. Delete Inactive Org Flow Versions permanently deletes selected versions after the target and confirmation phrase are reviewed.

Compare Orgs

Schema, source and local comparisons

Open Compare Orgs to choose a reference org, a compared org, and a scope: objects/fields, source metadata, or both. Loading the page or a saved preset does not start retrieval.

  • Review Only in [org] and Different findings; open metadata components in VS Code’s code/XML diff editor.
  • Filter results, select individual or matching rows, and export selected, filtered or all findings.
  • Set the source direction before preparing a manifest. This opens a draft in Manifest Builder; it does not deploy or delete anything.
  • Save org-pair/scope presets and comparison baselines. Partial comparisons cannot overwrite a complete baseline or mark its findings resolved.
  • Use Compare Local Source With an Org for checked-out source versus retrieved org metadata.

Source comparison retrieves into temporary directories outside your project. Normalization removes formatting/ordering noise while preserving meaningful changes. Profiles are excluded from source comparison because retrieved content depends on the manifest. Coverage reflects the connected users’ access and the chosen scope.

Email templates and library files

Open Compare Email Templates or Compare Library Files:

  1. Choose two orgs and Load folders.
  2. Pair email folders or file libraries/folders, such as Document Templates. Choose whether to include subfolders.
  3. Run Compare presence and review In both orgs, Only in A/B, or Duplicate names — review.

Both Classic and Lightning shared email folders are supported, including public unfiled templates. Personal folders are excluded. Template results show Classic/Lightning indicators; type differences across orgs are labelled.

Files match by title, extension and relative folder path; Lightning email templates match by readable name, while Classic templates use their API name. Both also match namespace and relative folder path, so generated Lightning API suffixes do not produce false missing-template results. All shared email folders preserves the full folder API path. Duplicates are flagged rather than paired arbitrarily.

File content is not downloaded or compared. In both means presence, not content equality. For a uniquely matched email template, expand Show differences (optional) to compare subject, text, HTML or Visualforce markup on demand, then expand each field to review an inline source diff. Large previews are bounded, and template HTML is displayed as text. Folder and presence loading show live progress with cancellation. Attachments and referenced images are outside that comparison.

Users & Access

Security 360 and the Permission grant viewer

Open Users & Access → Open Security 360 to search users, Profiles, Permission Sets and Permission Set Groups.

To open the Permission grant viewer: select a user, then choose Trace grants beside an object or field permission. The diagram shows user → granting source → permission, with source navigation, directional animation and a pause control.

The workspace provides paginated permissions, source details, user/source comparisons and read-only assignment-impact previews. Live Permission Set Groups use Salesforce’s calculated permissions after muting and require a current calculation. Unavailable evidence is labelled; record sharing, session activation and licence restrictions remain separate checks.

Additional tools are available through More tools…:

Tool Purpose
Diagnose Record Access Review UserRecordAccess with available ownership, group, role, team and sharing evidence.
Find Access Grant Sources Reverse lookup sources granting an object or field capability.
Compare User Access / Compare Effective Access Compare users or permission sources.
Assignment Impact Preview added, removed or retained access without changing assignments.
Security Findings / Field Security Risks Review elevated permissions, sensitive-field exposure and assignment hygiene.
Cleanup Recommendations Investigate unused, redundant or inactive-user access.
Manage Finding Exceptions Record an owner, reason and expiry for accepted findings.
Permission Matrix / Compare Permission Sources Review local permission metadata; local grants do not establish effective user access.
Save / Compare Security Snapshots Capture evidence and compare access drift between dates.

Clone User

Choose a source user and review the new user’s identity before creating them. Copy or choose a profile and role, then independently select All, Choose, or None for permission sets, permission set groups, public groups and queues. Queues default to None; new users default to inactive.

The review shows copied/omitted access and advisory licence checks. Creation and assignments report individual outcomes; download the provisioning report when finished. Apply remaining / retry failed operates on the newly created user and does not create another user or automatically retry unknown write outcomes.

Only direct memberships are copied. Passwords, MFA and feature/permission-set licences are not copied. Salesforce validates assignment compatibility.

User Access Policies

Search policies, inspect criteria and grant/revoke actions, and activate or disable all or selected policies for the displayed org.

Activate all / Disable all covers the full loaded list, regardless of filters. Individual failures do not stop remaining policies. Stop remaining stops further work and final verification reports confirmed, failed, unknown and unattempted outcomes. Disabling a policy does not undo earlier access changes. Unsupported API operations link to Salesforce Setup.

Apex & Logs

Anonymous Apex

Anonymous Apex Scripts manages per-org .apex documents in the native editor. Search, create, rename, duplicate or delete scripts; run selected code or the full document against its pinned org.

Loaded-schema and local Apex suggestions complement normal editing. Results link compilation/runtime errors to source and include searchable, bounded log output. Deleted scripts go to Trash. Earlier notebook support remains available for compatibility.

Apex Test Runner

Choose classes, suites or local tests, optionally request coverage, and track asynchronous runs. Inspect failed methods, source-linked stack frames and uncovered lines, rerun failures, or reopen Apex Test History.

Tests run against deployed code. Pause updates or closing the page stops local tracking, not the Salesforce test run; use Watch run to resume. Run coverage and org-wide coverage are shown separately. Comparisons require compatible org/user, scope and coverage settings.

Debug Log Viewer

Search recent logs by user, operation or status; use Older logs for more history. Inspect execution sections, exceptions, debug output, SOQL/DML, callouts and governor limits. This Frame, Executable and Debug Only help narrow a log.

Timing is inclusive of nested sections; incomplete sections have no duration. Raw/JSON exports open on demand. Test and debug evidence uses private extension storage by default.

Org & Tools

Manifest Builder

Build or open package.xml using metadata inventory from the selected org.

  • Load members on demand, search types/members, choose wildcards or individual entries, and review Selected only.
  • Select matching / Deselect matching preserves choices outside the filter. Imported entries remain visible even when unavailable in the current inventory.
  • Preview XML, Review changes and Undo support review before saving. Open package.xml… and Save as… update the current file used by subsequent saves.
  • Retrieve from org, beside Save, saves the manifest and runs CLI manifest retrieval into your project. Progress, returned files and failures remain visible.

Outside file changes and unsaved manifest edits are checked before saving. Retrieval can change local source; save or revert affected editors first. Cancelling cannot undo files already retrieved. The builder does not deploy to the org.

Org Health & Limits

Review limits/storage, queued and failed Apex, scheduled jobs, deployments, Bulk ingest jobs and debug-log inventory. Sections appear as checks finish, with check times and explicit unavailable states.

Refresh all, refresh limits, or retry one section. Successful activity reads can be reused for one minute; explicit refresh bypasses the cache. Use Limits needing attention only, activity search and Failures only to focus the page.

Limits are ranked by usage: below 75% is healthy, 75–89.9% is warning, and 90%+ is critical. Trends compare compatible snapshots; Open JSON snapshot opens the evidence.

Setup Audit Trail

Review who changed Setup, what changed and when.

  • Choose 7, 30, 90 or 180 days, or an inclusive custom range using UTC dates.
  • Search descriptions/actions/people, filter by area or user, and sort results. Summary counts follow your filters.
  • Select a change for its full description, timestamp, action and delegated-user details.
  • Export filtered includes every matching loaded row; Export all loaded includes the loaded snapshot.
  • Load older changes retrieves another batch. Coverage states when older history remains or the safety limit has been reached.

Salesforce retains up to 180 days. Reads require access to Setup audit history in the selected org.

Changed Metadata

List every piece of metadata the org reports as created, modified or deleted in a time window: fields, Flows, layouts, Apex, Lightning pages, reports and every other listable type.

  • Choose the last 24 hours, 7, 30, 90 or 180 days, or a custom range in your local time. Managed-package metadata is hidden unless you include it.
  • Results are grouped by type, with who made each change and when. Filter by type, person or kind of change, or search.
  • Select changes and choose Open in Manifest Builder to save a package.xml, compare it or retrieve the metadata. Deletions and items in personal folders are left out.
  • Setup activity shows the Setup Audit Trail for the same window. Deletions only narrows it to removals.
  • Export writes the selected (or shown) changes as CSV, JSON, SpreadsheetML or clipboard text.

The scan calls the Metadata API directly with your CLI login, three types per request, and falls back to the Salesforce CLI when the direct connection is unavailable. Scan notes list types the org could not list and members that report no dates (standard objects and org-wide settings usually do not).

Deletions appear by name only where source tracking exists (scratch orgs and tracked sandboxes); elsewhere they appear in Setup activity. A parent's date does not change when its children do, so a new field is listed as a CustomField. Profiles and permission sets can show dates from unrelated saves.

API Explorer and GraphQL Workspace

API Explorer sends org-relative REST, Tooling and Apex REST requests using your CLI login. Choose an example or enter the method, endpoint and optional JSON body. Review HTTP status, elapsed time, response body and headers. Writes and custom Apex REST requests require target-aware confirmation.

GraphQL Workspace provides query/variable editors, saved requests, schema exploration and individual error messages/paths. Cursor controls appear for connections reporting another page; they set after for review before the next run. Adjust the variable name if your query uses another one.

Both tools share formatted/compact response views, full-response search, Show more, copy and open-in-editor actions. Large responses render a bounded preview. Cancellation stops local work; a request may already have been processed by Salesforce. Request bodies and responses are not automatically saved as artifacts.

Custom Metadata Workspace

Find a type on the page, search its records, inspect field values, and explicitly export loaded records. The current preview reads up to 200 records per type; that limit and potentially partial exports are labelled.

Compare exports shows searchable, expandable before/after differences. Generate from export previews XML and lets you select files to write under force-app/main/default/customMetadata. Existing files start unselected; replacing them requires confirmation and can be reviewed in a diff. The generated manifest contains successfully written files and opens through Open package.xml. Nothing is deployed automatically.

JSON and Formula formatters

Both open with selected editor text and work without an org connection. Use Undo formatting, Compare before / after, clickable error locations, line numbers, word wrap, copy or Open in editor. Line numbers are hidden while wrapping.

  • JSON Beautifier: format, minify or sort keys with configurable indentation. Original number tokens are preserved, including long integers, 1.0 and 1e3. Escaped JSON strings can be unwrapped automatically.
  • Formula Formatter: choose indentation and a preferred line width of 80, 90 or 120. Long chains break before their operators by precedence (|| before &&, then comparisons, & and arithmetic), CASE keeps each value beside its result, and Compact puts a formula back on one line. Empty arguments and missing or dangling operators are reported with their position. Formatting preserves field names, literals, operators and comments; it does not validate the formula against an org.

Large inputs use plain highlighting, draft saving is batched, and delayed formatting replies cannot overwrite newer edits. Oversized selections receive an explicit message rather than being truncated.

Environment Doctor and Report Centre

Environment Doctor checks workspace trust, project structure, CLI, org connectivity, API version, schema and artifact storage. Problems appear first. Use Attention only, relevant settings/org/schema shortcuts, or Copy redacted summary for support.

Report Centre searches generated evidence by category, org, status and storage location. Open artifacts, compare compatible reports, favourite them, export copies or review retention candidates. Selected deletions go to Trash after confirmation. Sanitized exports redact common identifiers and credentials, but cannot guarantee anonymization of arbitrary business data.

Storage, coverage and performance

  • Standard reports use the configured project output directory. Sensitive org/security evidence and debug artifacts use private extension storage by default; project-local storage is an explicit setting.
  • CLI execution is blocked in untrusted workspaces. Writes expose their target and operation through the relevant review/confirmation flow.
  • No external telemetry is sent. CLI authentication remains with Salesforce CLI.
  • Missing permissions or unsupported queries appear as unavailable/partial coverage. Display limits do not imply complete org coverage.
  • Features load on demand. CLI work shares a queue capped at four processes; schema describes can use composite batches of 25. Caches distinguish the applicable project/org/user/API context.
  • Where Used reuses a watched source index. Large tables are paginated and large response rendering is bounded. Cancelled or superseded reads are rejected by the affected workspaces.
  • Clear Cached Org Metadata clears schema/test discovery caches and the Where Used index. Use individual tools’ refresh actions for their current snapshots.

Useful limits

View Current limit or behaviour
Audit Trail 2,000 entries per fetch; 100 displayed per page; narrow the date range after 50,000 loaded entries.
Changed Metadata First 3,000 matching changes displayed (exports include all); 10,000 per report, dashboard, document and email-template query; 2,000 Setup activity entries per scan.
SOQL results Visible grid up to 1,000 rows / 4 MiB; exports include all returned rows.
API Explorer 2 MiB request body; 4 MiB response limit; two-minute timeout.
GraphQL 512 KiB query; 2 MiB complete request; 4 MiB workspace result limit.
Shared response viewer First 65,536 characters rendered initially; search covers the full received response.
JSON / Formula formatting 2 MiB input; plain highlighting above 200,000 characters.
Flow Visualizer 2 MB source file; 1,500 diagram nodes including Ends; 4,000 connections.
Custom Metadata Up to 200 records loaded per type; 50 displayed per page.

Settings

Open VS Code Settings and search SFDXLabs Salesforce Toolkit. All names below use the sfdxlabs-tool-kit. prefix.

Setting Purpose / default
salesforceCLIPath Optional full path to sf or sf.cmd; blank uses the extension host’s PATH.
apiVersion Optional override; blank resolves the latest REST version supported by the selected org.
directQueries Talk to Salesforce directly over HTTPS with the CLI's session instead of a CLI process per request (SOQL Workspace, Changed Metadata, Home, Org Health, policy changes, Flow cleanup); on by default, with automatic CLI fallback.
outputDirectory Project report directory; data-dictionary.
outputFormats Dictionary CSV, JSON and Markdown output.
useTimestamps Preserve separate timestamped dictionary exports; off by default.
bulkDescribe Use composite describe batches; on by default.
concurrency Concurrent describes/batches, 1–10; default 4, subject to the shared CLI queue.
cacheTtlMinutes Schema cache lifetime; default 15, 0 bypasses cache reads.
sensitiveOutputLocation extensionStorage by default; project for deliberately shared evidence.
debugOutputLocation Debug-specific storage setting retained for compatibility.
reportRetentionDays Mark non-favourite reports as retention candidates after 90 days; 0 disables age-based selection.
securitySensitivePatterns / securitySensitiveObjects Field-name patterns and objects used by security findings.
securityAllowedElevatedPermissions Permission labels approved by policy and omitted from findings.

Keyboard shortcuts

Shortcut Action
Ctrl/Cmd+Enter Run the active SOQL query or Anonymous Apex where supported.
Ctrl/Cmd+Shift+Enter Run selected Anonymous Apex.
Ctrl/Cmd+Shift+F Format supported SOQL, JSON, formula or Apex input.
Ctrl+Space Request schema-aware SOQL/Apex suggestions.
Alt+↑/↓ Reorder selected fields in the SOQL builder.

Troubleshooting

The extension cannot find sf, but the terminal can. Set salesforceCLIPath to the full path from command -v sf on macOS/Linux or (Get-Command sf).Source in PowerShell. Run Environment Doctor again.

A tool is missing from the sidebar. Open the section’s More tools… or Find a tool…. The Permission grant viewer is inside Security 360: select a user, then Trace grants beside an object/field permission.

A report is empty or incomplete. Check its selected org, filters, coverage and loaded scope. The authenticated user may not have access to every component or record. Refresh the affected section or load the required objects.

New commands or Explorer menus are missing during development. Run Developer: Reload Window in the Extension Development Host. Restarting only the extension host does not reload menu contributions.

F5 reports “Could not register service worker / InvalidStateError”. Stop debugging, close the development-host window and launch F5 again. If necessary, close it and rename .vscode-test/preview-user-data to .vscode-test/preview-user-data-backup, then relaunch. This resets only the isolated development profile and keeps a backup.

Development

Preview without rebuilding a VSIX

  1. Open this extension repository in VS Code and run npm ci.
  2. Press F5 and choose Preview Salesforce Toolkit if prompted. It builds the release code and opens an Extension Development Host.
  3. Open your Salesforce project in that window. For a local Flow example, use src/test/fixtures/Visualizer.flow-meta.xml.
  4. After changes, run npm run build, then Developer: Reload Window in the development host. Restarting F5 also rebuilds.

The extension runs from dist; TypeScript-only compile/watch does not refresh the bundled preview. F5 uses isolated data and extensions under .vscode-test/preview-user-data and .vscode-test/preview-extensions. Your regular VS Code profile is separate; CLI authentication remains available.

Build, check and package

npm ci
npm run check:static
npm test
npm run build
npm run test:extension
npm run check:package
npm run package

npm run test:coverage additionally enforces a 55% line-coverage threshold. Extension-host tests use a temporary project and fake Salesforce CLI; they do not require a live org. Set VSCODE_EXECUTABLE_PATH to an existing VS Code executable for offline host testing.

Release builds enforce an 800 KiB activation-bundle budget and a 3 MiB total JavaScript budget. Source maps and development fixtures are excluded from the VSIX. Packaging uses the version in package.json.

The headless policy runner remains available through npm run policy; the retired Deployment Workbench and Code Quality Hub UI are not included.

Feedback and licence

Report issues through the repository’s Issues page. Include the tool, extension version, reproduction steps and a reviewed Environment Doctor → Copy redacted summary where useful. Avoid attaching credentials or sensitive org data.

Released under the MIT licence.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft