Edit

Share via


Dev Proxy Toolkit diagnostics

The Dev Proxy Toolkit VS Code extension analyzes your Dev Proxy configuration files and highlights potential issues. Each diagnostic has a code that links to this page for resolution guidance.

Diagnostic codes reference

Code Severity Description
apiCenterPluginOrder Warning Incorrect plugin order for API Center
deprecatedPluginPath Error Using old plugin DLL path
emptyUrlsToWatch Information No URLs configured to intercept
invalidConfigSection Warning Orphaned configuration section
invalidConfigSectionSchema Warning Config section schema version mismatch
invalidConfigValue Error Invalid value in config section
invalidSchema Warning Schema version mismatch with installed Dev Proxy
missingLanguageModel Warning Language model required but not enabled
noEnabledPlugins Warning No plugins are enabled
pluginConfigMissing Error/Warning Referenced config section missing
pluginConfigNotRequired Error/Warning Unnecessary config section
pluginConfigRequired Error/Warning Plugin requires configuration
reporterPosition Warning Reporter plugin not at end of list
summaryWithoutReporter Warning Summary plugin without reporter
unknownConfigProperty Warning Unknown property in config section

apiCenterPluginOrder

Severity: Warning
Quick fix available: No

OpenApiSpecGeneratorPlugin is placed after ApiCenterOnboardingPlugin.

Cause

OpenApiSpecGeneratorPlugin must generate the OpenAPI specification before ApiCenterOnboardingPlugin can use it.

Resolution

Place OpenApiSpecGeneratorPlugin before ApiCenterOnboardingPlugin:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/apicenteronboardingplugin.schema.json",
    "subscriptionId": "your-subscription-id",
    "resourceGroupName": "your-resource-group",
    "serviceName": "your-api-center",
    "workspaceName": "default"
  }
}

deprecatedPluginPath

Severity: Error
Quick fix available: Yes

The pluginPath uses a deprecated path format.

Cause

In Dev Proxy v0.29, the plugin DLL was renamed from dev-proxy-plugins.dll to DevProxy.Plugins.dll.

Resolution

Update the pluginPath to use the new format. Use the quick fix to update automatically.

{
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}

emptyUrlsToWatch

Severity: Information
Quick fix available: No

The urlsToWatch array is empty.

Cause

Dev Proxy uses urlsToWatch to determine which requests to intercept. An empty array means no requests will be processed.

Resolution

Add URL patterns to intercept:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*",
    "https://graph.microsoft.com/v1.0/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

invalidConfigSection

Severity: Warning
Quick fix available: No

A configuration section exists but no plugin references it.

Cause

A top-level object exists that isn't used as a configSection by any plugin. This often happens after removing a plugin but forgetting to remove its configuration.

Resolution

Either remove the orphaned section or add a plugin that references it:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/genericrandomerrorplugin.schema.json",
    "rate": 50
  }
}

invalidConfigSectionSchema

Severity: Warning
Quick fix available: Yes

The config section's $schema property doesn't match the installed Dev Proxy version.

Cause

Your config section references a different schema version than your installed Dev Proxy. This can cause validation issues or missing features.

Resolution

Update the config section's $schema property to match your installed version. Use the quick fix (light bulb icon or Ctrl+. / Cmd+.) to update automatically.

{
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

invalidConfigValue

Severity: Error
Quick fix available: No

A property value in the config section doesn't match the expected type or constraints defined in the schema.

Cause

The value might be the wrong type (for example, string instead of number), outside allowed ranges, or not in the list of valid options.

Resolution

Check the schema documentation for the expected value format and update accordingly.

{
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/genericrandomerrorplugin.schema.json",
    "rate": 50
  }
}

invalidSchema

Severity: Warning
Quick fix available: Yes

The $schema property doesn't match the installed Dev Proxy version.

Cause

Your configuration references a different schema version than your installed Dev Proxy. This can cause validation issues or missing features.

Resolution

Update the $schema property to match your installed version. Use the quick fix (light bulb icon or Ctrl+. / Cmd+.) to update automatically.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json"
}

missingLanguageModel

Severity: Warning
Quick fix available: Yes

A plugin requires the language model but languageModel.enabled isn't true.

Cause

Plugins like LanguageModelFailurePlugin and LanguageModelRateLimitingPlugin require a language model connection.

Resolution

Add or update the languageModel configuration. Use the quick fix to add automatically.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelFailurePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelFailurePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "languageModel": {
    "enabled": true
  },
  "languageModelFailurePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelfailureplugin.schema.json",
    "rate": 50
  }
}

noEnabledPlugins

Severity: Warning
Quick fix available: No

The plugins array is empty or all plugins are disabled.

Cause

Dev Proxy requires at least one enabled plugin to process requests.

Resolution

Add at least one plugin with enabled: true:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

pluginConfigMissing

Severity: Error (enabled plugin) / Warning (disabled plugin)
Quick fix available: No

A plugin references a configSection that doesn't exist.

Cause

The plugin has a configSection property but the corresponding configuration object is missing from the file.

Resolution

Add the missing configuration section. Use the snippet name shown in the diagnostic message.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}

pluginConfigNotRequired

Severity: Error (enabled plugin) / Warning (disabled plugin)
Quick fix available: No

A plugin has a configSection but doesn't support configuration.

Cause

Not all plugins support custom configuration. Adding a configSection to a plugin that doesn't need one has no effect.

Resolution

Remove the configSection property:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ]
}

pluginConfigRequired

Severity: Error (enabled plugin) / Warning (disabled plugin)
Quick fix available: No

A plugin requires a configSection but none is specified.

Cause

Some plugins require configuration to function. The plugin definition is missing the configSection property.

Resolution

Add a configSection property and create the configuration object. Use the snippet name shown in the diagnostic message.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json",
    "rate": 50
  }
}

reporterPosition

Severity: Warning
Quick fix available: No

A reporter plugin is placed before other nonreporter plugins.

Cause

Reporter plugins collect output from other plugins. Placing them before other plugins means they won't capture all data.

Resolution

Move reporter plugins to the end of the plugins array:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mockResponsePlugin"
    },
    {
      "name": "LatencyPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "latencyPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ],
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  },
  "latencyPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/latencyplugin.schema.json",
    "minMs": 200,
    "maxMs": 10000
  }
}

summaryWithoutReporter

Severity: Warning
Quick fix available: No

A summary plugin is enabled without a reporter plugin.

Cause

Plugins like ExecutionSummaryPlugin and UrlDiscoveryPlugin generate data that requires a reporter plugin to output.

Resolution

Add a reporter plugin after the summary plugin:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.example.com/*"
  ]
}

unknownConfigProperty

Severity: Warning
Quick fix available: Yes

A config section contains a property that isn't defined in its schema.

Cause

The property might be misspelled, from a different Dev Proxy version, or doesn't exist for this plugin.

Resolution

Remove or rename the unknown property. Use the quick fix to remove it automatically.

{
  "mockResponsePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json"
  }
}