Skip to content

ntm

v1.18.3 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

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

✓ No known CVEs patched in this version

Topics

ai-agents cli developer-tools go tmux

ReleasePort's take

Light signal
editorial:auto 1mo

Release v1.18.3 adds new session management features and several bug fixes across modules.

Why it matters: New session save/list/resume/archive actions enhance workflow control; critical scanner race‑condition fix prevents intermittent failures in production deployments.

Summary

AI summary

Broad release touches @Dicklesworthstone, Bug Fixes, Quick Install ```bash, and codex.

Changes in this release

Feature Medium

Adds session save, list, resume, and archive with agent state.

Adds session save, list, resume, and archive with agent state.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Medium

Adds JSON surface of persona prompt source per pane in spawn output.

Adds JSON surface of persona prompt source per pane in spawn output.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Medium

Adds codex goal‑lifecycle action commands feature.

Adds codex goal‑lifecycle action commands feature.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Medium

Adds ntm codex palette‑state and pane‑state classifier.

Adds ntm codex palette‑state and pane‑state classifier.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Medium

Adds ntm codex preflight goal‑readiness classifier.

Adds ntm codex preflight goal‑readiness classifier.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Fixes duplicate adoption of panes by deduping on resolved pane ID.

Fixes duplicate adoption of panes by deduping on resolved pane ID.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Fixes assign handling of --agent any|all|* as “no provider filter”.

Fixes assign handling of --agent any|all|* as “no provider filter”.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Fixes scanner race condition by eliminating UBS stdout pipe teardown race.

Fixes scanner race condition by eliminating UBS stdout pipe teardown race.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Fixes TUI to force full clear and repaint on terminal resize.

Fixes TUI to force full clear and repaint on terminal resize.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Fixes caam/cass dependency health probes for correct operation.

Fixes caam/cass dependency health probes for correct operation.

Source: llm_adapter@2026-06-12

Confidence: low

Bugfix Low

Corrects caam/cass dependency health probe implementation in tools module.

Corrects caam/cass dependency health probe implementation in tools module.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Full changelog

NTM v1.18.3

Named Tmux Manager - Orchestrate AI coding agents in tmux sessions with beautiful TUI interfaces.

Quick Install

# One-liner install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash -s -- --version=v1.18.3

# Homebrew (macOS/Linux)
brew install dicklesworthstone/tap/ntm

# Source build
git clone --branch v1.18.3 --depth 1 https://github.com/Dicklesworthstone/ntm.git
cd ntm && go install ./cmd/ntm

Shell Integration

Add to your shell rc file:

eval "$(ntm shell zsh)"   # for zsh
eval "$(ntm shell bash)"  # for bash
eval "$(ntm shell fish)"  # for fish

Changelog

Features

  • 069fe4be3999a60a123a69ade6a9b6b0b9a57dc1: feat(agentmail): classify lock-list failures with a structured reason_code (#182) (@Dicklesworthstone)
  • f825931114a24a7822d86d4d886946d1a615cf78: feat(codex): goal-lifecycle action commands (#165, #168, #169) (@Dicklesworthstone)
  • c8a5018e134107127ac8274f409f05e297a07d21: feat(codex): ntm codex palette-state + pane-state classifier (#166) (@Dicklesworthstone)
  • c474c37de48ba54f0e5301425d519c4b21030ebd: feat(codex): ntm codex preflight goal-readiness classifier (#167) (@Dicklesworthstone)
  • 507e613801ef0af641a7422f23bb47f49d1d1e57: feat(sessions): save/list/resume/archive tmux sessions with agent session state (#175) (@Dicklesworthstone)
  • efbae6ad1679c491a161f760a25b50357a191bfa: feat(spawn): surface persona prompt source per-pane in JSON output (@Dicklesworthstone)

Bug Fixes

  • e963db77ff6dcd324d5bcbdcd95c342cf4ff85c9: fix(adopt): dedup by resolved pane ID so a pane can't be adopted twice (#170) (@Dicklesworthstone)
  • f997a85c7575ab7928559036ed2f74943ed27c71: fix(assign): treat --agent any|all|* as "no provider filter" (@Dicklesworthstone)
  • 2efe2ac4b8a3fbc30dc414132189a3c899739453: fix(assign): wire triage classifier into getAssignOutputEnhanced (@Dicklesworthstone)
  • 74f9b60194eb30a675eb8062c166ebd2ca03a82b: fix(bv): is_actionable uses allow-list to truly match assign classifier (@Dicklesworthstone)
  • 9353cd5097af6ff5c798bbd2d05e87eea81a8410: fix(bv): make is_actionable status-aware in convertRecommendation (@Dicklesworthstone)
  • 692ae76f4db06f105e25e76b5a50191f22855460: fix(ci): golangci-lint v2 module path; Dockerfile go 1.26 to match go.mod (@Dicklesworthstone)
  • 418fbe6b35f9e1a7af3612710896a44b5d9d6955: fix(cli): gate session selector on stdin TTY + actionable no-session error (@Dicklesworthstone)
  • 7d53359bcc37d8ca18e788a0e6bb8e6998bfb19d: fix(cli): pick a non-internal session as the no-session error example (@Dicklesworthstone)
  • d60bba5761091ace01402ece28421758c3cc5a8c: fix(codex): ground palette-state markers in Codex source, not guesses (#166) (@Dicklesworthstone)
  • 4ec77ee47b765a35db6a0ed9609eeefda8513968: fix(codex): preflight captures visible screen, not deep scrollback (#173) (@Dicklesworthstone)
  • a7ca841eb4f72d9fb60d9388f6e95352cf409f5c: fix(codex): tighten goal-action safety after fresh-eyes review (#165/#168) (@Dicklesworthstone)
  • 122d517d6b7bf6e483b3bf0e265a5fe256a0b1c8: fix(config): preserve global config when project overlay is invalid; docs for CLI discovery on non-login shells (@Dicklesworthstone)
  • 25c9cf803f0fabf5fbcd13c252d122c6581ca2b7: fix(handoff): simplify macOS prefix detection in ensureNoSymlinkComponents (@Dicklesworthstone)
  • fe7ded5d23d0cd2798ca5717090484ff8f380f56: fix(hooks): raise default pre-commit scan timeout 60s -> 120s (@Dicklesworthstone)
  • 4bc644ba9c6c10ec80001ba16258e2cba9441376: fix(lint): exclude noisy new linter rules; gofmt -s history.go (@Dicklesworthstone)
  • 6c5b15940b666223d5c9700cda65f2848ed96299: fix(persona): parse and apply reasoning_effort from personas.toml (#171) (@Dicklesworthstone)
  • ece0cc4ae7528ffb221fa9b7d687fa2bff785804: fix(robot): emit real window index in dashboard agent address (#172) (@Dicklesworthstone)
  • d5ca3b95e2707f773abdefbd8572ff46a7a10b8f: fix(robot): fail loud on untargetable interrupt/restart; emit real window index (#172 safe subset) (@Dicklesworthstone)
  • 0e5fbcd5b9b0dec3e268000c7bfeaf1b7afd6961: fix(robot): topology-aware pane addressing for multi-window sessions (#172) (@Dicklesworthstone)
  • 2e7a5a2f5d56b91d06e8cbd1250bea8550517d25: fix(scanner): eliminate UBS stdout pipe teardown race via bounded writer (@Dicklesworthstone)
  • 0e45f11efc2ffd4d3aef57aa9594692db9acd7ab: fix(sessions): match Claude Code's project-dir encoding exactly (collapse all non-alphanumerics) (@Dicklesworthstone)
  • e68d9d72ce18207e11351a50080035d6b27d08dc: fix(sessions): resume the right Claude session and launch rendered agent commands (#175) (@Dicklesworthstone)
  • 2b827322bf4823bcc64119b8af1c4ef1ea763934: fix(spawn): poll for pane readiness on immediate-prompt path instead of fixed 200ms sleep (@Dicklesworthstone)
  • 89811b9a7514d370ead3f357f758f265e9863f5a: fix(test): normalize macOS /var→/private/var symlink in path-comparison tests (@Dicklesworthstone)
  • 28da0a1d7b73763d705ff32b6cae8445ac14a15a: fix(test): relax TestSpringAnimationOverhead target on CI/darwin (@Dicklesworthstone)
  • 84df6626c2d07c4b1a16f6c31df197e65cccde9c: fix(test): round-2 macOS CI fallout — handoff symlink check, worktree git-list canonicalisation, robust HasChildAlive (@Dicklesworthstone)
  • 1ae58e8741087f2b751524b1333b4a65cd73e5d5: fix(tools): correct caam/cass dependency health probes (acfs#296) (@Dicklesworthstone)
  • 6615dd7d7526f9e4121028245ddd3992b1ff726e: fix(tui): force full clear+repaint on terminal resize (#186) (@Dicklesworthstone)

Documentation

  • 30a8f7d2be755b4aaf5d104a9987f304dbb397b1: docs(skill): frame checkpoints as a routine cadence + Agent Mail outage boundary (@Dicklesworthstone)

Others

  • 4bb204704d3151b90ee3c846365e045ec382669c: fix(adopt,robot): window-aware pane addressing; stop silently dropping panes (#170) (@Dicklesworthstone)
  • 44dcb9e3b3af4e937639e6594298ce14a175ecde: flip [agent_mail].supervisor_enabled default to false and refuse port fallback (@Dicklesworthstone)

Full Changelog: https://github.com/Dicklesworthstone/ntm/compare/v1.18.2...v1.18.3

Container Image: ghcr.io/dicklesworthstone/ntm:v1.18.3

Breaking Changes

  • Default [agent_mail].supervisor_enabled flipped to false and port fallback is refused

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 ntm

Get notified when new releases ship.

Sign up free

About ntm

Named Tmux Manager — spawn, tile, and coordinate multiple AI coding agents (Claude, Codex, Gemini) across tmux panes with a TUI command palette.

All releases →

Beta — feedback welcome: [email protected]