Skip to content

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai ai-agents ai-memory anthropic artificial-intelligence claude
+12 more
claude-agent-sdk claude-agents claude-code-plugin claude-skills codex embeddings long-term-memory memory-engine openclaw openclaw-skills postgresql llm

Affected surfaces

auth breaking_upgrade

ReleasePort's take

Light signal
editorial:auto 14d

Hivemind v0.7.39 adds a consent prompt to `hivemind install` with API-key fallback and non-interactive token paths. Declined consent no longer blocks installation.

Why it matters: Install now requires user consent, non-blocking if declined. Use `--skip-auth` to skip consent in CI/autoupdate. Test consent acceptance, decline with fallback, and token paths in dev.

Summary

AI summary

Updates Test plan, Structural changes, and Out of scope across a mixed release.

Changes in this release

Feature Medium

Inserts a single 🐝 consent prompt between `hivemind install` and the device-flow browser open.

Inserts a single 🐝 consent prompt between `hivemind install` and the device-flow browser open.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Adds an API-key paste fallback when the user declines or the device flow fails to complete.

Adds an API-key paste fallback when the user declines or the device flow fails to complete.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Provides a non-interactive token path (`--token` / `DEEPLAKE_API_TOKEN` / `HIVEMIND_TOKEN`) for CI / scripted installs.

Provides a non-interactive token path (`--token` / `DEEPLAKE_API_TOKEN` / `HIVEMIND_TOKEN`) for CI / scripted installs.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Failed/declined sign-in no longer aborts install; hooks always land, making auth a separable concern.

Failed/declined sign-in no longer aborts install; hooks always land, making auth a separable concern.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Three dispatch paths for `runAuthGate()` based on context (TTY/no token, TTY/token, non-TTY/token, non-TTY/no token, any/context with `--skip-auth`).

Three dispatch paths for `runAuthGate()` based on context (TTY/no token, TTY/token, non-TTY/token, non-TTY/no token, any/context with `--skip-auth`).

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

New banner copy displayed to users prompting sign-in with explanation of shared memory and cloud storage options.

New banner copy displayed to users prompting sign-in with explanation of shared memory and cloud storage options.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

If user declines or device flow fails, prompts for API key paste as alternative sign-in method.

If user declines or device flow fails, prompts for API key paste as alternative sign-in method.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Introduced `loginWithProvidedToken()` in `src/cli/auth.ts` to handle token-based login.

Introduced `loginWithProvidedToken()` in `src/cli/auth.ts` to handle token-based login.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Autoupdate is insulated from the new consent prompt via triple-guard checks and `--skip-auth` flag.

Autoupdate is insulated from the new consent prompt via triple-guard checks and `--skip-auth` flag.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Feature Medium

Telemetry events for consent step not included; planned for follow-up PR pair with deeplake-api enhancements.

Telemetry events for consent step not included; planned for follow-up PR pair with deeplake-api enhancements.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Feature Medium

Autoupdate is guarded against the consent prompt via token check, `--skip-auth`, and closed stdin.

Autoupdate is guarded against the consent prompt via token check, `--skip-auth`, and closed stdin.

Source: granite4.1:30b@2026-05-21-audit

Confidence: low

Feature Low

Telemetry for consent steps deferred to follow‑up PRs; current implementation does not add new events.

Telemetry for consent steps deferred to follow‑up PRs; current implementation does not add new events.

Source: granite4.1:30b@2026-05-21-audit

Confidence: low

Refactor Medium

Extracted `saveCredentialsFromToken(token, apiUrl, { skipTokenMint })` to `src/commands/auth.ts` for shared credential writing.

Extracted `saveCredentialsFromToken(token, apiUrl, { skipTokenMint })` to `src/commands/auth.ts` for shared credential writing.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Refactor Medium

Moved `confirm()` and new `promptLine()` into `src/cli/util.ts` for reuse by `sessions prune` and paste fallback.

Moved `confirm()` and new `promptLine()` into `src/cli/util.ts` for reuse by `sessions prune` and paste fallback.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Refactor Medium

Added new `parseToken()` flag parser and `runAuthGate()` dispatcher in `src/cli/index.ts`.

Added new `parseToken()` flag parser and `runAuthGate()` dispatcher in `src/cli/index.ts`.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

2 regression cases in `tests/cli/update-skip-auth-guard.test.ts` preserving `--skip-auth` argument.

2 regression cases in `tests/cli/update-skip-auth-guard.test.ts` preserving `--skip-auth` argument.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

16 unit cases in `tests/cli/install-consent.test.ts` covering various TTY and non-TTY scenarios, token handling, and skip-auth behavior.

16 unit cases in `tests/cli/install-consent.test.ts` covering various TTY and non-TTY scenarios, token handling, and skip-auth behavior.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

5 test cases for `confirm()` in `tests/cli/cli-util.test.ts`.

5 test cases for `confirm()` in `tests/cli/cli-util.test.ts`.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

7 test cases for `loginWithProvidedToken()` in `tests/cli/cli-auth.test.ts`.

7 test cases for `loginWithProvidedToken()` in `tests/cli/cli-auth.test.ts`.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

3 bundle smoke cases in `tests/cli/install-consent-bundle.test.ts` ensuring no readline hang with closed stdin.

3 bundle smoke cases in `tests/cli/install-consent-bundle.test.ts` ensuring no readline hang with closed stdin.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Medium

Manual tests covering TTY decline, accept, invalid token, valid token with mock endpoints, skip-auth, and already-logged-in scenarios.

Manual tests covering TTY decline, accept, invalid token, valid token with mock endpoints, skip-auth, and already-logged-in scenarios.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Other Low

2 regression tests verify preservation of `--skip-auth` argument in autoupdate guard.

2 regression tests verify preservation of `--skip-auth` argument in autoupdate guard.

Source: granite4.1:30b@2026-05-21-audit

Confidence: low

Full changelog

Summary

Inserts a single 🐝 consent prompt between hivemind install and the device-flow browser open. Adds an API-key paste fallback when the user declines or the device flow fails to complete, and a non-interactive token path (--token / DEEPLAKE_API_TOKEN / HIVEMIND_TOKEN) for CI / scripted installs. Failed/declined sign-in no longer aborts install — hooks always land; auth becomes a separable concern.

Addresses the ~85% drop-off between hivemind install and completed sign-in (~30 → ~5).

Flow

Three paths, dispatched by runAuthGate() in src/cli/index.ts:

| Context | Token source | Outcome |
|---|---|---|
| TTY, no token | — | Show 🐝 banner → Yes runs device flow; No (or failed device flow) → API-key paste fallback. Empty paste = continue, skip sign-in. |
| TTY, --token / env token | flag/env | Validate via /me, save creds, skip consent (token = consent) |
| Non-TTY, token present | flag/env | Same as above, no prompt |
| Non-TTY, no token | — | Print "No TTY" + URL + retry command (DEEPLAKE_API_TOKEN=<key> hivemind install), continue install |
| Any context, --skip-auth | — | Bypass everything (unchanged) |

Banner copy

🐝 One more step to unlock Hivemind

To enable shared memory and auto-learning across your agents,
we need to sign you in. Your traces will be securely stored in
your private Hivemind, so all your agents can recall them.

You can later connect your own cloud storage like S3/GCS/Azure Blob.

Sign in now? [Y/n]

If N (or Y but device flow doesn't complete):

Alternatively, sign in at https://app.deeplake.ai/api-keys, create
an API key, and paste it here. Press Enter to skip and continue
installing without sign-in (you can run `hivemind login` later).

API key:

Autoupdate insulation (verified, no code change)

Autoupdate is triple-guarded against this new prompt:

  1. Only fires when creds?.token exists (src/hooks/shared/autoupdate.ts:128-129)
  2. Spawns hivemind install with --skip-auth (src/cli/update.ts:207)
  3. Uses detached: true, stdio: "ignore" so child stdin is closed regardless

tests/cli/update-skip-auth-guard.test.ts source-greps + bundle-greps the --skip-auth arg so a future refactor can't silently route autoupdate through consent.

Structural changes

  • saveCredentialsFromToken(token, apiUrl, { skipTokenMint }) extracted in src/commands/auth.ts — single credentials-writer shared by device flow and env-var/flag path.
  • confirm() and new promptLine() lifted into src/cli/util.ts — reused by sessions prune and the new paste fallback.
  • New loginWithProvidedToken() in src/cli/auth.ts.
  • New parseToken() flag parser + runAuthGate() dispatcher in src/cli/index.ts.

Telemetry

Intentionally not in this PR. The existing signup_intent (deeplake-api PR #222, already merged) + signup_completed already measure the install→signup funnel. Granular consent-step events (declined / token-paste / device-flow outcome attribution) will land in a follow-up PR pair: (a) deeplake-api adds a value property to signup_intent plus a token-paste firing point on /me, (b) hivemind sends a X-Hivemind-Signin-Method header on the relevant calls.

Test plan

  • [x] 16 unit cases in tests/cli/install-consent.test.ts covering TTY accept/decline + paste fallback (empty + valid), accept + device-flow-fail + recovery paste, all non-TTY combinations, --skip-auth, already-logged-in
  • [x] 5 cases for confirm() in tests/cli/cli-util.test.ts
  • [x] 7 cases for loginWithProvidedToken() in tests/cli/cli-auth.test.ts
  • [x] 3 bundle smoke cases in tests/cli/install-consent-bundle.test.ts — drives bundle/cli.js with closed stdin against a mock /me, asserts no readline hang
  • [x] 2 regression cases in tests/cli/update-skip-auth-guard.test.ts — source AND bundle level --skip-auth literal preserved
  • [x] Existing tests/cli/cli-index.test.ts updated for the new contract; restores process.stdin.isTTY in teardown (CodeRabbit out-of-diff fix)
  • [x] Full per-file coverage thresholds met for src/cli/util.ts and src/cli/auth.ts (80%)
  • [x] Manual: TTY decline (pty), TTY accept (real prod browser sign-in), TTY + invalid token against mock 401, non-TTY + valid token against mock /me + /organizations, --skip-auth, already-logged-in — all green against the real built bundle

Out of scope

  • Telemetry events for consent_shown / accepted / declined / token_paste (follow-up PR pair).
  • Re-prompting consent at session-start if user said no.
  • A "remind me later" third option.

Confidence: 90%. Untested: real production /me + /organizations with a real beta token end-to-end (verified against mocked endpoints; shape was confirmed against deeplake-api source).

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Hivemind turns agent traces into skills and shares with your team

Get notified when new releases ship.

Sign up free

About Hivemind turns agent traces into skills and shares with your team

All releases →

Related context

Earlier breaking changes

  • v0.7.52 Removes `hivemind tasks` CLI and related code surfaces.
  • v0.7.51 Removes `hivemind tasks` CLI and related code surfaces.
  • v0.7.19 Module name skilify replaced with skillify; affects all imports
  • v0.7.19 CLI command skilify removed; renamed to skillify without deprecation alias
  • v0.7.18 CLI subcommand renamed from `skilify` to `skillify`; no deprecation alias.

Beta — feedback welcome: [email protected]