Releases: Bobsans/AIHelper
Release list
v1.5.0
AIHelper v1.5.0
Linux gains a managed MCP service, OpenCode joins the agents AIHelper can wire
itself into, and every published JSON Schema is now derived from the Rust type
that serializes it — which is how the GitLab and PostgreSQL schema defects fixed
here were found, and why they cannot come back.
Highlights
- The managed MCP HTTP server installs as a systemd user unit on Linux
(experimental), with the same lifecycle, status reduction, and drift detection
as the Windows Task Scheduler path. ah ai installsupports theopencodetarget, andah ai statusreports
every system, user, project, and local environment rather than one scope per
target.- Published JSON Schemas are derived from the types that serialize them, so a
schema can no longer disagree with its payload. Two GitLab commands that
failed every typed call withOUTPUT_SCHEMA_VIOLATIONare fixed as a
consequence. - An
ahinvocation consumed by update recovery now says so, in the event log
and in--jsonoutput.
What's Changed
✨ New
ah mcp service install,start,stop,restart,status, anduninstall
work on Linux, registering the managed HTTP server as the systemd user unit
aihelper-managed-mcp.servicewanted bydefault.target. The support is
experimental: it needs a reachablesystemctl --usermanager
(XDG_RUNTIME_DIRand a running user manager), and running the unit with
nobody logged in still requiresloginctl enable-linger, which AIHelper does
not enable for you. macOS continues to report
MCP_SERVICE_UNSUPPORTED_PLATFORM.ah ai install,ah ai uninstall, andah ai statussupport theopencode
target. TheaihelperMCP server is registered in OpenCode's JSON/JSONC
configuration with its comments preserved, andah ai statusnow reports every
supported system, user, project, and local environment instead of one scope per
target.- An invocation consumed by update recovery reports itself. The event log gets
one system record, severity warning, code
UPDATE_RECOVERY_CONSUMED_INVOCATION, carrying the redacted argv, the
interrupted transaction id, the operation, and the journal state found on disk.
With--json, the payload'sconsumed_invocationfield distinguishes a
command that never ran from one that ran and printed nothing.
🚀 Improvements
- Every published JSON Schema — built-in domains, host commands, and all four
dynamic plugins — is derived from the Rust types it describes instead of being
written by hand. file.stat.kindandplugins.list.source/statepublish theirenumvalues,
and the threeplugins.*mutations publishconstoncommand, where before
the values existed only in prose.- The managed rules block written by
ah ai installstates the invariants no
per-command description can carry:context.cwdover MCP, closed argument
schemas, long work belonging toah.job.*, paths that must already exist, a
missing secret being the user's to add, and401/403meaning a missing scope
rather than something to retry. Rerunah ai installto refresh an existing
block. - Ollama's decode failure message matches the GitHub and GitLab wording:
failed to decode ollama response for '<path>'. TheOLLAMA_RESPONSE_INVALID
code is unchanged. - A write to stdout that the stream refuses is reported as
OUTPUT_WRITE_FAILED
instead of panicking the process.
🐛 Fixes
gitlab.issuesandgitlab.pipelinespublished an output schema declaring
four of the ten properties they serialize, withadditionalProperties: false,
so every typed call returnedOUTPUT_SCHEMA_VIOLATION. Both schemas now come
from the types that produce them.- MCP clients could receive a credential id in an error
cause. Redaction had
been applied on the CLI side only; both surfaces now project from one table. gitlab.job.traceandgitlab.job.warningsleft OSC terminal sequences in the
trace text, so a warning wrapped in one did not match the warning scan. GitLab
now uses the same stripper as GitHub, which handles OSC and CSI.postgres.execpublished itsyesconfirmation flag as optional and relied on
the handler to refuse; the schema now requires it.postgres.describerequires
object, which its extractor always needed.github release createandgitlab release createsent unset options as an
explicitnull— rejected by GitHub withnil is not a string, and read by
GitLab as a request to clear the field. Unset options are omitted, so each API
applies its own default.- Over MCP,
github.*andgitlab.*calls that name their ownrepoor
projectand read no file input no longer requirecontext.cwd. - A git remote pointing at a self-managed GitLab supplies the host when
--host
is omitted, instead of failing withGITLAB_PROJECT_UNDETECTEDwhile
addressinggitlab.com. An explicit--hostor--projectis never
overridden. - The workspace builds, tests, and lints cleanly on Linux and macOS.
⚠️ Compatibility
- Derived schemas differ from the hand-written ones in four ways that carry no
meaning:requiredis alphabetical, a nullable field spells itself
type: [T, "null"]instead ofoneOf: [T, null], array arguments advertise
"default": [], and an emptyrequiredis omitted rather than published as
[]. Property names, types, and constraints are unchanged. AH_POSTGRES_TEST_SYSTEM_PATHno longer overridespsqlresolution. It was
named as a test seam but shipped in the plugin ahead ofPATHitself, and no
test referenced it. Resolution now followsPATH.- The released CLI surface and the stable JSON and MCP contracts remain
backward compatible with v1.4.0. The C plugin ABI is unchanged: version 1,
with the same exported symbols.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains the ah executable and its executable-relative plugins/
directory. Keep them together after extraction.
Full Changelog
v1.4.0
AIHelper v1.4.0
This release adds one-command setup for five AI coding agents and extends the
credential vault to GitHub and GitLab workflows while keeping secret values out
of MCP calls and command logs.
Highlights
- Configure Claude Code, Codex, Gemini, Cursor, or GitHub Copilot with
ah ai install, including stdio, loopback HTTP, and managed Windows MCP
transports. - Use vault-backed GitHub and GitLab tokens from the direct CLI or MCP without
putting token values into agent requests. - Complete secret setup in a protected browser form with responsive styling,
strict content security policy, and a confirmation page.
What's Changed
✨ New
ah ai install,ah ai uninstall, andah ai statusmanage theaihelper
MCP registration and a bounded rules block forclaude,codex,gemini,
cursor, andcopilot. Installation supports--scope,
--transport <stdio|http|managed>,--url, component-only modes,
confirmation, and dry-run output.- Direct CLI commands can select vault entries with
--credential SLOT=ID
whenever their command catalog declares a matching secret slot. - Secret kinds
github-tokenandgitlab-tokenprovide the optionaltoken
credential slot used by all GitHub and GitLab commands. - Protected browser secret setup now provides light and dark themes, responsive
layout, redacted success metadata, and a Close action.
🚀 Improvements
- CLI and MCP credential execution share the plugin's normal parser and
BindResolvedSecretsvalidation path instead of maintaining a separate
CLI-to-typed conversion path. - GitHub and GitLab ambient environment tokens and Git credential-helper output
are limited to the default API host, the detected remote host, or loopback.
Caller-selected API hosts require an explicit token. - MCP rejects inline GitHub and GitLab token arguments and requires the vault
credential slot; direct--tokenflags and provider environment variables
remain available for CLI use. - Managed AI-agent installation uses the endpoint reported by
ah mcp service status, starts or installs the service only when explicitly
selected, and refuses drifted registrations.
🐛 Fixes
- Browser secret submission no longer fails with
LOCAL_REQUEST_REJECTEDwhen
the form posts back to the local setup endpoint. - GitHub and GitLab refuse to send tokens to cleartext non-loopback endpoints;
GitLab also withholds tokens from a GraphQL endpoint on another host. - Git credential-helper execution is bounded, drains output while waiting, and
always reaps the child process. - Credential parsing stops at
--, secret-like option values remain redacted,
andAH_VAULT_MASTER_KEYrejects non-hexadecimal input. - AI-agent installation validates a plain HTTP loopback URL ending exactly in
/mcpand restores the prior CLI registration when replacement fails. - PostgreSQL
tool.*commands reject database credentials rather than silently
ignoring them.
⚠️ Compatibility
- Released CLI, JSON/MCP, plugin ABI, and C ABI contracts remain backward
compatible. The removed CLI-to-typed sidecar API was not part of a published
release. - Existing direct GitHub and GitLab
--tokenflags and theGITHUB_TOKEN,
GH_TOKEN,GITLAB_TOKEN, andGL_TOKENenvironment variables continue to
work.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains the ah executable and its executable-relative
plugins/ directory. Keep them together after extraction.
Full Changelog
v1.3.2
AIHelper v1.3.2
AIHelper v1.3.2 completes the Windows rollback compatibility fix introduced in
v1.3.1.
What's Fixed
- A rollback to an older release now finalizes the already verified updater
transaction before invoking that release's normalmcp service install
command. Older binaries no longer need to recognize the newer updater-only
installfast path, and managed MCP is reconciled and restarted normally.
Compatibility
- CLI, JSON/MCP contracts, plugin ABI, release manifests, and archive layout
are unchanged from v1.3.1. - Upgrades still restore managed MCP before finalizing the transaction. Only
rollback and recovery paths that return to an older target use the
backward-compatible finalization order.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive is published with matching .manifest.json and .manifest.sig
assets. The Windows archive includes ah-mcp-service.exe and
ah-update-helper.exe.
Full Changelog
v1.3.1
AIHelper v1.3.1
AIHelper v1.3.1 fixes Windows self-update completion when managed MCP is
installed and running.
What's Fixed
- Update activation and rollback now reconcile the managed MCP definition and
Task Scheduler registration before starting the restored service. This
updates the expected binary version and restart policy instead of failing
withMCP_SERVICE_CONFIGURATION_DRIFT. - Interruption recovery runs the signed update helper from a verified private
copy outside the transaction directory. Windows can therefore remove the
completed transaction without the helper locking its own executable.
Compatibility
- CLI, JSON/MCP contracts, plugin ABI, release manifests, and archive layout
are unchanged from v1.3.0. - Existing v1.3.0 installations without a pending transaction can upgrade
normally to v1.3.1.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive is published with matching .manifest.json and .manifest.sig
assets. The Windows archive includes ah-mcp-service.exe and
ah-update-helper.exe.
Full Changelog
v1.3.0
AIHelper v1.3.0
AIHelper v1.3.0 adds retryable HTTP workflows and atomic response extraction for
multi-step API checks. It also restores Windows updater rollback handoff and
makes managed MCP restart and stop behavior reliable on Task Scheduler hosts
where native failure retries do not run consistently.
Highlights
- HTTP requests and assertion cases support opt-in fixed-delay retries through
both CLI and typed MCP. - Assertion specs can extract JSON values, headers, and regex captures for use
by later cases without publishing extracted secrets in reports. - Windows managed MCP owns its bounded retry loop and safely handles task
instances disappearing during stop. - Interactive CLI errors provide actionable corrections, usage, and scoped
help without changing machine-readable JSON diagnostics.
What's Changed
✨ New
ah http request,get,post,put,patch,delete,replay,
assert, andrunaccept--retryand--retry-delay-ms. Transport
failures, timeouts, response read failures, and HTTP5xxresponses are
retryable; HTTP4xxand assertion failures are not.- HTTP assertion specs support an
extractmap with JSON-path, response-header,
and text-regex selectors. A case publishes its values only after all
assertions and extractors succeed, and reports never include extracted
values.
🚀 Improvements
- Interactive text errors replace internal-code-first output with concise
explanations, likely command corrections and descriptions, valid command
shapes, scoped--helpguidance, and practical recovery hints.--json
retains the stable diagnostic fields used by automation.
🐛 Fixes
- Windows update activation, recovery, and
ah upgrade --rollbackvalidate the
inherited named-mutex lifecycle lease used by the managed MCP service. ah-mcp-service.exeperforms one initial child launch plus at most three
retries at one-minute intervals, while native Task Scheduler retries remain
disabled to prevent duplicate retry loops.ah mcp service stoptolerates the exact Task Scheduler instance disappearing
during state readback or immediately beforeStop()without weakening task,
instance, or PID identity checks.
⚠️ Compatibility
- Existing CLI behavior, stable JSON/MCP response contracts, and plugin C ABI
remain backward compatible; retries and extraction are opt-in additions. - Retrying POST, PUT, PATCH, or DELETE after an ambiguous transport failure or
HTTP5xxcan repeat a remote mutation that already succeeded. - Windows managed MCP installations require
ah-mcp-service.exebeside
ah.exe. Keep it together withah-update-helper.exeand the
executable-relativeplugins/directory.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains the ah executable and its executable-relative
plugins/ directory. The Windows archive also contains
ah-mcp-service.exe and ah-update-helper.exe. Each archive is published with
matching .manifest.json and .manifest.sig assets.
Full Changelog
v1.2.1
AIHelper v1.2.1
AIHelper v1.2.1 hardens Windows managed MCP startup and command diagnostics.
Managed services launch without transient console windows, while invocation
logs can distinguish AIHelper success from the result of a checked child
process without retaining child output.
Highlights
- Windows Task Scheduler starts managed MCP through the thin,
windowlessah-mcp-service.exelauncher. run.checkcompletion records can report the child exit outcome without
storing stdout, stderr, or child argv.- Managed-service status retains scheduler errors while continuing safe runtime
and readiness inspection.
What's Changed
🚀 Improvements
- Completed
run.checkinvocation logs include only the optional child
success,timed_out, andexit_codeoutcome. A failed checked process does
not incorrectly change the successful outer AIHelper invocation status.
🐛 Fixes
- The Windows managed service uses a thin GUI-subsystem launcher that starts
the siblingah.exein a kill-on-close Job Object without creating or
attaching to a console. - Task Scheduler readback uses the exact rooted task identity, and
ah mcp service statuspreserves scheduler diagnostics while still reporting
trusted runtime and readiness evidence. ah ctx packandah ctx symbolsskip complete files with invalid UTF-8 even
when invalid bytes occur after the initial binary sniff.
⚠️ Compatibility
- Released CLI, JSON/MCP, and plugin C ABI contracts remain backward compatible.
- Windows managed MCP installations require
ah-mcp-service.exebeside
ah.exe. The Windows release archive includes both executables; keep them
together withah-update-helper.exeand the executable-relativeplugins/
directory.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains the ah executable and its executable-relative
plugins/ directory. The Windows archive also contains
ah-mcp-service.exe and ah-update-helper.exe. Each archive is published with
matching .manifest.json and .manifest.sig assets.
Full Changelog
v1.2.0
AIHelper v1.2.0
AIHelper v1.2.0 adds a managed Windows MCP service, bounded parallel MCP jobs,
and a signed Windows self-update path. Release assets now carry canonical
Ed25519 manifests and signatures so installed updater code can verify release
identity and managed files before activation.
Highlights
- Manage a per-user HTTP MCP server through
ah mcp service install,start,
stop,restart,uninstall, andstatuswithout elevation or stored
passwords. - Run typed MCP commands through bounded parallel execution and the ordinary
ah.job.start,ah.job.status,ah.job.result, andah.job.canceltools. - Check, install, recover, and roll back signed Windows x64 updates through
ah upgradewhile preserving managed MCP state. - Verify every release archive through a canonical manifest, detached Ed25519
signature, and exact managed-file inventory.
What's Changed
✨ New
- Local Streamable HTTP MCP serving exposes exact readiness identity and an
identity-aware control shutdown endpoint while sharing process-wide execution
capacity and retained jobs across sessions. - The managed MCP lifecycle uses a per-user Task Scheduler 2.0 registration,
exact process identity, deterministic status snapshots, and a bounded restart
policy. - Windows x64 users can run
ah upgrade --check,ah upgrade,
ah upgrade --version VERSION, andah upgrade --rollback. Update
transactions verify candidates offline, recover after interruption, keep one
verified permanent backup, and restore a previously running managed MCP. - The release workflow publishes archive, manifest, and signature triplets for
Linux x64, Windows x64, and macOS ARM64. The Windows archive includes the
isolatedah-update-helper.exehelper.
🚀 Improvements
- Standalone version output avoids runtime startup and invocation logging.
- Windows process timeouts use Job Objects to terminate descendant processes
without scanning unrelated system threads. MCP logs distinguish queue wait
from execution time, andgit statusreduces child-process startup overhead. - Packaged CLI and MCP smoke checks run on every release platform before assets
are accepted for publication.
🐛 Fixes
- MCP shutdown, job cancellation, managed-service recovery, and updater handoff
reject ambiguous process identity and preserve retryable durable state on
bounded failures. - Activation, rollback, and recovery keep operation-specific diagnostics and
bound helper subprocess time, output, and descendant lifetime.
🔒 Security
- The updater verifies canonical release manifests, detached Ed25519 signatures,
archive identity, and signed managed-file hashes against its embedded
production public key before activation. The private signing seed remains in
the protected GitHubrelease-signingenvironment. - Release signing rejects unsafe archive entry types and unsupported compression,
bounds state reads during I/O, and uses immutable commit SHAs for external
GitHub Actions.
⚠️ Compatibility
- Built-in self-update is supported on Windows x64.
v1.2.0is the first
release containing the updater, so users onv1.1.0must install this release
manually;ah upgradecan then install later compatible releases. - Native Windows process control requires Windows 10 or Windows Server 2016 and
newer. Other supported platforms continue to use manual archive installation.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Keep each extracted ah executable with its executable-relative plugins/
directory. The Windows archive also requires ah-update-helper.exe beside
ah.exe for self-update. Each archive is published with matching
.manifest.json and .manifest.sig assets.
Full Changelog
v1.1.0
AIHelper v1.1.0
AIHelper gains privacy-aware operational logging for CLI and MCP activity, providing bounded diagnostic records without exposing secret-bearing values by default.
Highlights
- Daily JSONL records for completed CLI and MCP invocations.
- Structured diagnostics, ten-day retention, bounded records, and concurrent-process locking.
- Default secret redaction with an explicit opt-in for isolated diagnostics.
What’s Changed
✨ New
- Best-effort daily JSONL logging captures completed CLI and MCP invocations with structured error diagnostics.
- Logging enforces ten-day retention, bounded record sizes, and concurrent-process locking.
🔒 Security
- Secret-bearing values are redacted by default.
AH_LOG_UNREDACTED=1enables full diagnostic values for isolated troubleshooting while retaining record-size limits.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.
Full Changelog
v1.0.0
AIHelper v1.0.0
AIHelper 1.0 turns every enabled typed command into a discoverable MCP tool with schemas, structured results, cancellation, and explicit safety metadata.
Highlights
- A production stdio MCP server exposed through
ah mcp serve. - Transport-neutral typed contracts shared by built-in and dynamic tools.
- Risk, impact, effects, and reversibility metadata across every supported domain.
What’s Changed
✨ New
- Each enabled typed command is available as a separate MCP tool with input/output schemas and live catalog updates.
- Dynamic plugin sidecar symbols support typed catalog discovery, invocation, and cancellation.
- Built-in, host, GitHub, GitLab, Ollama, and PostgreSQL tools advertise operational risk metadata.
🚀 Improvements
- Runtime execution uses a bounded sequential FIFO with request-scoped cwd, limits, deadlines, and cancellation.
- Cargo-built profile plugins take precedence during development while packaged executable-relative discovery remains unchanged.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.
Full Changelog
v0.6.3
AIHelper v0.6.3
This hardening release makes long-running and high-volume agent workflows safer through bounded streaming, descendant-process cleanup, deterministic traversal, and stricter plugin boundaries.
Highlights
- Bounded command, task, HTTP, and provider-log processing.
- Deterministic search and byte-safe Git change detection.
- More complete GitLab issue inspection with configurable GraphQL routing.
What’s Changed
✨ New
- Response and output limits cover HTTP bodies, GitHub workflow logs, GitLab job traces, and saved task execution.
- GitLab supports
--graphql-urlandissue view --fullaggregation for details, comments, and designs.
🚀 Improvements
run checkandtask runbound output while reading and terminate descendant processes on timeout.- Search traversal is deterministic and ignore-aware even when
rgis unavailable. - Git and context change detection preserve unusual paths and rename metadata through NUL-delimited parsing.
- Provider log processing, pagination, deadlines, and plugin invocation boundaries fail more predictably.
🐛 Fixes
- Relative
--cwdis applied once, and child arguments resembling host flags are preserved. - Valid UTF-8 remains text when a sniff buffer ends inside a multibyte character.
⚠️ Compatibility
- Plugin boundary hardening preserves the existing plugin ABI.
Downloads
| Platform | Archive |
|---|---|
| Windows x64 | ah-windows-x64.zip |
| Linux x64 | ah-linux-x64.zip |
| macOS ARM64 | ah-macos-arm64.zip |
Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.