elmah.io changelog

Blogged: Why AI-Generated code still needs tests

https://blog.elmah.io/why-ai-generated-code-still-needs-tests/

Why AI-Generated code still needs tests

AI writes code fast, but it can’t know your business rules or security needs. Here is why AI-generated code still needs tests and human review.

New

GPT-6 Luna available for Bugster

GPT-6 Luna is now available for Bugster as both a model hosted by OpenAI and by us. The elmah.io-hosted option is available for Enterprise users. When picking the OpenAI-hosted model, you still need to provide your own API key. You will find the configuration for Bugster on the Organization Settings page.

Blogged: Memory-efficient JSON in .NET 10 web APIs with PipeReader

https://blog.elmah.io/memory-efficient-json-in-net-10-web-apis-with-pipereader/

Memory-efficient JSON in .NET 10 web APIs with PipeReader

Learn how .NET 10’s PipeReader support in System.Text.Json reduces GC pressure when deserializing large JSON payloads in ASP.NET Core web APIs.

Fix

elmah.io tasks for Azure DevOps now run on Linux agents

The elmah.io Deployment Notification and elmah.io Upload Source Map extensions for Azure DevOps now run on Linux and macOS agents as well as Windows. Both tasks are available as version 5.

Until now, both tasks were written for Azure DevOps’ PowerShell handler, which only runs on Windows agents, so a step on an ubuntu-latest agent failed with “The current operating system is not capable of running this task”. Version 5 is rewritten in Node.js, which every agent type can run.

To upgrade, change the task version in your pipeline. Inputs are unchanged:

- task: ElmahIoDeploymentNotification@5
- task: ElmahIoUploadSourceMap@5

In classic release pipelines, select task version 5.*. Version 5 requires agent 3.232.1 or newer, which all Microsoft-hosted agents already run. It also fails the step if elmah.io rejects the request, for example because of an invalid API key, and shows elmah.io’s error message in the step log. Pipelines still on version 4 keep running on Windows agents.

The documentation has been updated for deployments from Pipelines, deployments from Releases, and uploading source maps from Azure DevOps.

Blogged: 10 MCP servers you need to install now as a .NET developer

https://blog.elmah.io/10-mcp-servers-you-need-to-install-now-as-a-net-developer/

10 MCP servers you need to install now as a .NET developer

Ten MCP servers I use as a .NET developer, from NuGet and Azure DevOps to Playwright and Cloudflare, with example prompts and read-only tips.

Improvement

Updated IP addresses for uptime monitoring

The IP addresses used by elmah.io Uptime Monitoring have changed in all regions. If you allow our uptime agents through a firewall or similar by IP address, you will need to update your allowlist. Europe North and Europe West were the most out of date, and some requests were coming from addresses that weren’t on the published list.

You can find the current IP addresses per region in the Allowing elmah.io uptime agents documentation. If you allow requests by User-Agent (elmahio-uptimebot/2.0) instead, nothing needs to change.

Improvement

Gemini 3.6 Flash replaces Gemini 3.5 Flash in Bugster

Google has deprecated Gemini 3.5 Flash, so we have replaced it with Gemini 3.6 Flash in Bugster. Existing Bugster configurations using the old model have been updated automatically. You will find the model selection on the Organization Settings page.

Cloudflare added to sub-processors

Cloudflare has been added to the list of sub-processors. We use Cloudflare as a web application firewall and content delivery network in front of our websites. That means Cloudflare processes the IP address and request details of visitors in order to filter malicious traffic and deliver pages.

Let us know if you have any questions.

Blogged: Designing APIs for AI agents: your API has a new user

https://blog.elmah.io/designing-apis-for-ai-agents-your-api-has-a-new-user/

Designing APIs for AI agents: your API has a new user

ASP.NET Core patterns for designing AI-agent-ready APIs: DTOs, idempotency keys, pagination, machine-readable errors, and fine-grained auth.

Improvement

More visualizations on the Server Variables tab

We’ve added visualizers for a few more values on the Server Variables tab:

More visualizations on the Server Variables tab

New

New documentation: Add MCP Server to Antigravity

There’s a new page on the documentation site explaining how to Add the elmah.io MCP Server to Antigravity.

New

Blazor Web App sample and documentation

We added a sample showing how to log from a Blazor Web App to the Elmah.Io.Blazor.Wasm repository. It combines Elmah.Io.Extensions.Logging (plus Elmah.Io.AspNetCore.ExtensionsLogging) in the Server project with Elmah.Io.Blazor.Wasm in the Client project, covering all four Blazor render modes: Static Server, Interactive Server, Interactive WebAssembly, and Interactive Auto. Blazor Web App is now the first section on the Blazor docs page: https://docs.elmah.io/logging-to-elmah-io-from-blazor/

Blogged: Swagger vs. Scalar: A comprehensive comparison for ASP.NET Core developers

https://blog.elmah.io/swagger-vs-scalar-a-comprehensive-comparison-for-asp-net-core-developers/

Swagger vs. Scalar: A comprehensive comparison for ASP.NET Core developers

ASP.NET Core 10 dropped Swagger UI from its default project template. See how Swagger stacks up against Scalar for API docs, and set up each one.

September newsletter

We published a new issue of the elmah.io Newsletter: https://mailchi.mp/elmah/simplifying-file-logging-in-asp-net-core-with-serilog-16566329

Newsletter

If you want to receive an email every 2-3 months with all of the recent goodies on elmah.io, make sure to subscribe here: http://eepurl.com/dE1hCn

Blogged: Using C# 14 to build "Smart records" for config & settings models

https://blog.elmah.io/using-c-14-to-build-smart-records-for-config-settings-models/

Using C# 14 to build "Smart records" for config & settings models

Discover how C# 14 extension members turn plain records into self-validating, immutable configuration models for cleaner ASP.NET Core apps today.

New MCP server tools to hide, fix, and mark messages as bot

The MCP server now exposes six new tools for managing log messages: messages_hide, messages_unhide, messages_fix, messages_open, messages_bot, and messages_unbot. These let an AI client hide noisy messages, mark errors as fixed (or reopen them), and flag messages as bot traffic (or undo that), directly from a conversation with Claude, Codex, or another MCP client.

messages_hide, messages_fix, and messages_open accept an optional flag to apply the change to every other message sharing the same grouping hash, while messages_bot and messages_unbot take a list of up to 500 message IDs per call. All six tools only act when a user has explicitly asked for that specific change, never speculatively while an AI is just investigating errors.

The documentation has been updated to include the new tools.

Blogged: Getting started with RAG in ASP.NET Core

https://blog.elmah.io/getting-started-with-rag-in-asp-net-core/

Getting started with RAG in ASP.NET Core

A beginner’s guide to RAG: build a simple keyword-matching retrieval pipeline in an ASP.NET Core Web API, step by step, no embeddings needed.

New

Elmah.Io.Cli 5.4.104 with API key as environment variable

We released a new version of the elmah.io CLI. The new version contains the following changes:

The documentation has been updated to show the use of the new environment variable.

New

New documentation: Add MCP Server to Codex

There’s a new page on the documentation site explaining how to Add the elmah.io MCP Server to Codex.

New

Allow Bugster access to source control

Bugster, the helpful AI agent on elmah.io, just received an improvement that can significantly improve the answers to your questions about your logs: source control access. In the Bugster configuration, you can pick either GitHub or Azure DevOps to allow Bugster to look up source files in your repositories. The connection is configured on the Organization Settings page, while picking a repository is available on the Log Settings page. This allows for configuring the connection once and then picking individual (or the same) code repositories per log.

Check out the updated documentation to learn how to set it up: Give Bugster access to your source code.

Allow Bugster access to source control