Repository navigation
Release v0.4.0
Ashlar 0.4.0 brings Ashlar bricks to your editor and your CI: an MCP brick host, GitHub bricks that answer "what is blocking this pull request or release?", and a free GitHub Action that runs them on every pull request.
Your agents decide what to do. Ashlar decides what is allowed to run, and keeps the receipt.
Highlights
-
MCP brick host (
Ashlar.Mcp.Server.Host, new). Run it withdnx Ashlar.Mcp.Server.Host@0.4.0 --yes, or install it as theashlar-mcp.NET tool. It exposes only the bricks you allowlist to MCP clients such as GitHub Copilot in VS Code, Claude Code, Cursor and Visual Studio. Every call, refusals included, writes one audit record; the records form a hash chain, and a call whose record can't be written returns no result. See the host README. -
GitHub bricks (
Ashlar.Bricks.GitHub, new).github.blockersreturns a verdict for a pull request or release, each blocker with an evidence link, and every fact it could not read, with the reason. Version 1.1.0 reads required checks and reviews without admin rights.github.pr-statusandgithub.ci-statuscover pull request state and CI runs. -
A free check for PR blockers (
actions/pr-blockers). A GitHub Action that writes thegithub.blockersverdict to the job summary. No account, no API key, no telemetry: it reads GitHub with the job's own token, and a run that gets no answer fails instead of reading as ready.- uses: IanFrelinger/Ashlar/actions/pr-blockers@v0.4.0
-
Lighter authoring.
Ashlar.Authoringno longer brings the host. A new brick project's first restore on an empty cache goes from 144 packages and 998 MiB to 30 packages and 144 MiB.
Hardening from the MCP host's adversarial audit
- Calls to unlisted tools and calls the policy gate denies are recorded, and the caller gets the
auditId. - Arguments over
Ashlar:Mcp:Bricks:MaxArgumentBytes(64 KiB by default) are refused and recorded before the brick runs. - No record, no result: a call whose audit record can't be written returns an error, not a result.
- Audit files are no longer pruned after ten server starts.
- Text read from GitHub (check names, status descriptions, reviewer logins, refs) reaches answers and the job summary as one inline code span each, capped and stripped of control characters. Evidence links are kept only for absolute http(s) URLs.
Measured
In our token benchmark, one github.blockers call cost 87–94% less than an agent using the official GitHub MCP server's tools, on three workloads with caching on, with the same verdicts. The accuracy study, published after the release, grades the 1.1.0 brick shipped here: 211 of 211 true blockers across 100 pull requests in 10 public repositories.
Upgrading
- A host that referenced only
Ashlar.Authoringand callsAddAshlar()now also addsAshlar.Hosting.Bundle. - CLI image:
ghcr.io/ianfrelinger/nexo-cli:0.4.0(linux/amd64 and linux/arm64). - Packages, symbols,
nuget-publish-manifest.jsonand per-package.sha256.txtfiles are attached to this release.
Full details are in the 0.4.0 changelog.