v0.1.6 — dedup fix + holds MCP & n8n node first release
Reeflex v0.1.6 — multi-channel: Claude adapter, holds MCP server, n8n node
Released: 2026-07-05
Branch: release/v0.1.6 (git tag pending release)
Core image: unchanged — reeflex-core has no changes in 0.1.6, so the GHCR
image stays ghcr.io/reeflex-io/reeflex-core:v0.1.5
(digest sha256:ca6f0488290721db16db5c9ff3b1af8acb3b14010a7f0f2e5d37d87abab3a2ac).
Highlight
First multi-channel release. The Claude adapter, the holds MCP server, and the
n8n community node ship to PyPI / npm alongside the GitHub release and the GHCR core
image — three new approval/enforcement surfaces around the same deterministic core.
What's in it
Added
reeflex-holdsMCP server (first release). A FastMCP server exposing
list_holds/get_hold/resolve_hold/get_freeze_statusover reeflex-core's
Holds API, so an MCP client (e.g. Claude Desktop) can be the approval surface.
Env-configured (REEFLEX_CORE_URL/REEFLEX_TOKEN/REEFLEX_PRINCIPAL/
REEFLEX_VERIFY_SSL); TLS-verify opt-out at parity with the adapters.n8n-nodes-reeflexcommunity node (first release). The "Reeflex Gate" node
(allow / hold / deny outputs) + "Reeflex API" credential, plus five importable,
story-driven demo workflows preconfigured against the public api-dev eval endpoint —
each with an embedded GIF of a real run.- reeflex-claude:
REEFLEX_VERIFY_SSL+REEFLEX_CORE_TOKEN. TLS-verify opt-out
(user's risk, default on) and bearer auth, at parity with the WordPress adapter;
enables dev/self-signed + authenticated core endpoints (e.g.api-dev.reeflex.io).
Fixed
- WordPress adapter — double-gating dedup (reeflex-gate 0.1.5). An MCP-originated
action gated twice (the ability's own gate + the MCP adapter layer) created two holds
for one call; approving both re-ran the action twice. The adapter now deduplicates by
canonical envelope hash + session within a tight creation-time window, so a
double-gated action executes at most once — the second approval closes its record
without re-executing. Corrected the wp-admin docblock/notice that wrongly claimed the
companion approval never executes. Regression test (hold-dedup-regression-demo.php,
D1–D8) added. - n8n demo 3 (approval loop). Resolves holds with a
humanprincipal (api-dev's
default resolution policy is human-only) with an id distinct from the actor (avoids
actor_is_approver), and regeneratesmeta.nonceon resubmit (core rejects a reused
nonce as a replay) — so the decide → hold → resolve → resubmit → allow loop runs
end-to-end out of the box in a real n8n.
Artifacts in this release
reeflex-gate-wordpress-standard.zip— WordPress reference adapter, standard-plugin
form (reeflex-gate 0.1.5, carries the dedup fix).reeflex-gate-wordpress-mu.zip— same adapter, mu-plugin form.reeflex_claude-0.1.6-py3-none-any.whl/reeflex_claude-0.1.6.tar.gz— the Claude
Code hook adapter (PyPI).reeflex_holds-0.1.0-py3-none-any.whl/reeflex_holds-0.1.0.tar.gz— the holds MCP
server (PyPI).n8n-nodes-reeflex-0.1.0.tgz— the n8n community node (npm). Shipsdist/only; the
five demo workflows travel with the GitHub repo, not the npm tarball.reeflex-verify.zip/reeflex-test-abilities.zip— conformance/verify tooling,
unchanged since v0.1.5.
Scope
Adapters and surfaces only. reeflex-core and the /v1/decide decision path are
unchanged; zero LLM in the decision path is unchanged. The agent principal type on
the holds resolution surface is AIL (an operator-designated AI judge, audited) — the
first decision (OPA/Rego) remains fully deterministic.