v2.15.0
What's Changed
Fixed
-
env_varsnow exposes the preview/production scope (#291 — thanks @petteremil) — theapplicationlist branch projects rows throughtoEnvVarSummary, which emitteduuid/key/value/is_buildtime/is_runtimeand droppedis_preview. Preview and production are separate scopes in Coolify, so the same key legitimately exists in both with different values; with the flag stripped, a caller saw what looked like a duplicated variable with conflicting values, concluded it was misconfigured, and "corrected" whichever row it happened to pick.is_previewis now part of the summary. (Service and database lists return the full object and were never affected.)The write side had the matching gap:
is_previewwas only accepted insidebulk_update'sdata[]array, so the singlecreateandupdateactions could not target the preview scope at all, despiteCreateEnvVarRequest/UpdateEnvVarRequestalready supporting it and upstream documenting it on both request bodies. It is now accepted oncreateandupdateacross application, service and database. Omitting it targets production, unchanged. The tool description now states that the two scopes are distinct and that a key existing in both is normal configuration rather than an error to reconcile. -
Coolify v4.2 compatibility: state-changing endpoints moved from GET to POST (#292 — thanks @StreamlinedStartup) — v4.2 (coollabsio/coolify#10872) requires
POSTon start/stop/restart/deploy/enable/disable/validate and returns a hard405forGET. Six client call sites still sentGETand would have broken on upgrade, affecting thecontrol(services),deploy,validate_serverandsystem(enable_api/disable_api) tools.Checking upstream's
routes/api.phpat v4.1.2, v4.0.0 and older betas showed the fix does not have to break anyone still on 4.1. Service start/stop/restart and/deploywere already registeredRoute::match(['get','post'])well before v4.2, so those now sendPOSTunconditionally. Only/enable,/disableand/servers/{uuid}/validategenuinely diverge — GET-only up to v4.1.2, POST-only from v4.2 — and those sendPOSTand retry once withGETon a405, caching the resolved method per endpoint. The retry is safe because a405is raised by the router before the controller runs, so nothing has executed; only405triggers it, and every other failure propagates untouched. The cache self-heals in both directions — if a rememberedGETlater returns a405because the instance was upgraded to v4.2 mid-session, the stale preference is dropped andPOSTis re-probed rather than failing until restart. No version probing, no config flag, and no breaking change for pre-4.2 users. -
Secrets hidden by v4.2 no longer look like present-but-empty values (#292) — v4.2 (coollabsio/coolify#9893) strips sensitive fields from responses unless the token has sensitive-read scope.
PrivateKey.private_key,EnvironmentVariable.valueandEnvVarSummary.valuewere typed as required, so a withheld secret arrived asundefinedbehind a type that promised astringand flowed downstream silently. They are now optional, forcing callers to handle the missing case. OutboundCreate*Requesttypes are unchanged, since request payloads are unaffected.
Changed
405and403errors now explain the v4.2 changes (#292) — a405previously surfaced as a bareHTTP 405: Method Not Allowed. It now points at the GET-to-POST move, and the401/403hint notes that v4.2 Member-role tokens are read-only, which is the likely cause of a403that appears immediately after upgrading.
Security
env_varslist now masks database secrets by default (#276) — theapplicationandservicelist branches masked values (***) unlessreveal=truewas passed, but thedatabasebranch calledlistDatabaseEnvVarswith no options, so it returned every value in plaintext and silently ignoredreveal. Database env vars are the most sensitive data the server touches (passwords, connection strings), so this was the exact leak the masking layer exists to prevent, and it directly contradicted the tool's documented default.listDatabaseEnvVarsnow masksvalue/real_valueby default and honorsreveal, matching the application and service behaviour.
🖱️ One-click Claude Desktop install: download coolify-mcp.mcpb below and drag it into Settings → Extensions.