{"id":25092,"date":"2025-12-04T00:32:11","date_gmt":"2025-12-04T08:32:11","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/?p=25092"},"modified":"2025-12-04T00:32:11","modified_gmt":"2025-12-04T08:32:11","slug":"dev-proxy-v2-0-with-improved-ai-telemetry-and-small-breaking-changes","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/dev-proxy-v2-0-with-improved-ai-telemetry-and-small-breaking-changes\/","title":{"rendered":"Dev Proxy v2.0 with improved AI telemetry, and small breaking changes"},"content":{"rendered":"<p>We&#8217;re excited to announce the release of <strong>Dev Proxy v2.0<\/strong>. Following semantic versioning (SemVer), we&#8217;re bumping the major version due to <strong>breaking changes<\/strong>\u00a0in this release. While these changes are small, they improve Dev Proxy&#8217;s accuracy and behavior &#8211; and we want you to be aware of them.<\/p>\n<p>This release also brings .NET 10 support, enhanced AI telemetry capabilities, and important fixes that make your API simulations more reliable.<\/p>\n<p>In this version:<\/p>\n<ul>\n<li><strong>Breaking changes<\/strong>\u00a0in date formatting and telemetry behavior<\/li>\n<li>.NET 10 support<\/li>\n<li>Improved AI telemetry with cached tokens tracking<\/li>\n<li>Bug fixes and improvements<\/li>\n<\/ul>\n<h2>Breaking changes<\/h2>\n<p>We&#8217;ve made small but important changes that could affect your existing workflows:<\/p>\n<h3>Culture-invariant date formatting in Graph mocks<\/h3>\n<p>Previously, <strong>GraphMockResponsePlugin<\/strong> formatted dates using your system&#8217;s culture settings (e.g., <em>13\/11\/2025 14:30:00<\/em> on French systems vs. <em>11\/13\/2025 2:30 PM<\/em>\u00a0on US systems). This was a bug &#8211; Dev Proxy wasn&#8217;t accurately emulating how Microsoft Graph actually works. Graph always returns dates in standardized formats, regardless of where it&#8217;s running.<\/p>\n<p><strong>What changed:<\/strong><\/p>\n<p>All mocked Graph responses now use consistent, culture-invariant formats that align with how Microsoft Graph actually behaves:<\/p>\n<ul>\n<li><strong>HTTP Date headers<\/strong> use RFC 1123 format: <em>Sun, 16 Nov 2025 11:16:59 GMT<\/em>\u00a0(per RFC 7231)<\/li>\n<li><strong>InnerError.Date properties<\/strong> use ISO 8601 format: <em>2025-11-16T11:16:59<\/em><\/li>\n<\/ul>\n<p><strong>Impact:<\/strong> If you parse dates from mocked responses, you may need to update your code to handle these standardized formats. The upside? Dev Proxy now accurately emulates Microsoft Graph&#8217;s real behavior, giving you consistent responses across all environments &#8211; just like the actual Graph API does.<\/p>\n<h3>Smarter telemetry recording behavior<\/h3>\n<p>We&#8217;ve improved how the <strong>OpenAITelemetryPlugin<\/strong> and <strong>OpenAIUsageDebuggingPlugin<\/strong>\u00a0handle their outputs, making them more consistent with other Dev Proxy recording plugins.<\/p>\n<p><strong>What changed:<\/strong><\/p>\n<ul>\n<li><strong>OpenAITelemetryPlugin<\/strong>\u00a0now only includes requests captured while recording is active in its generated report &#8211; aligning with how other recording plugins work<\/li>\n<li><strong>OpenAIUsageDebuggingPlugin<\/strong>\u00a0now only creates CSV files when Dev Proxy intercepts relevant OpenAI requests<\/li>\n<li>Running <strong>devproxy &#8211;version<\/strong>, or other sub-commands, no longer creates unnecessary output files<\/li>\n<\/ul>\n<p><strong>Impact:<\/strong>\u00a0If your automation relies on these files always being created, you&#8217;ll need to check for their existence before processing them. This change keeps your workspace clean and ensures you only get reports with actual data.<\/p>\n<h2>.NET 10 support<\/h2>\n<p>Future-proof your development workflow with .NET 10. Dev Proxy now runs on the latest .NET runtime, giving you access to the newest performance improvements, security patches, and language features.<\/p>\n<p>Upgrading to .NET 10 ensures Dev Proxy stays aligned with Microsoft&#8217;s latest development platform, providing you with a faster, more secure, and more capable API simulation tool.<\/p>\n<h2>Enhanced AI telemetry with cached tokens tracking<\/h2>\n<p>Understanding how your AI-powered applications use tokens is crucial for managing costs and optimizing performance. The <strong>OpenAITelemetryPlugin<\/strong> now tracks <strong>cached tokens<\/strong> alongside standard token usage, giving you complete visibility into your AI API consumption.<\/p>\n<h3>Why this matters:<\/h3>\n<p>When your app uses cached prompts, AI providers typically charge significantly less for those tokens. Without tracking cached tokens separately, you couldn&#8217;t accurately measure cost savings or optimize your caching strategy. Now you can see exactly how much you&#8217;re benefiting from prompt caching, helping you make data-driven decisions about your AI implementation.<\/p>\n<h2>Dev Proxy Toolkit<\/h2>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=garrytrinder.dev-proxy-toolkit\">Dev Proxy Toolkit<\/a> is an extension that makes it easier to work with Dev Proxy from within Visual Studio Code. Alongside the new release of Dev Proxy, we\u2019ve also released a new version of the toolkit, v1.10.0. In this version, we\u2019ve updated all JSON snippets to use v2.0.0 schemas.<\/p>\n<p>Checkout out the <a href=\"https:\/\/marketplace.visualstudio.com\/items\/garrytrinder.dev-proxy-toolkit\/changelog\">changelog<\/a> for more information on changes and bug fixes.<\/p>\n<h2>Why upgrade to v2.0?<\/h2>\n<p>While the breaking changes are small, they make Dev Proxy more accurate and reliable. <strong>Dev Proxy v2.0<\/strong>\u00a0ensures:<\/p>\n<ul>\n<li><strong>Consistent behavior<\/strong>\u00a0&#8211; Culture-invariant dates work the same everywhere<\/li>\n<li><strong>Accurate cost tracking<\/strong>\u00a0&#8211; Complete visibility into cached tokens<\/li>\n<li><strong>Cleaner workflows<\/strong>\u00a0&#8211; No more empty telemetry files cluttering your workspace<\/li>\n<li><strong>Future-ready<\/strong>\u00a0&#8211; .NET 10 support keeps you on the latest platform<\/li>\n<\/ul>\n<h2>Try it now<\/h2>\n<p>Download <strong>Dev Proxy v2.0<\/strong> today and build better API-connected applications with confidence!<\/p>\n<p>Thanks to <a href=\"https:\/\/github.com\/bartizan\">Artem Azaraev<\/a> and for contributing to this release.<\/p>\n<p>Got feedback or ideas? <a href=\"https:\/\/github.com\/dotnet\/dev-proxy\/discussions\">Join us<\/a> and be part of the conversation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducing Dev Proxy v2.0 with improved AI telemetry, and small breaking changes.<\/p>\n","protected":false},"author":74222,"featured_media":25093,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[186,289],"class_list":["post-25092","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-365-developer","tag-net","tag-dev-proxy"],"acf":[],"blog_post_summary":"<p>Introducing Dev Proxy v2.0 with improved AI telemetry, and small breaking changes.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/25092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/74222"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=25092"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/25092\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/25093"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=25092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=25092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=25092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}