claude-ops v3.11.0

3 hours ago

claude-ops 3.11.0 changes what your agents may do without you. Messages leave only through your host's approved outbound gate, archives need your approval and a read-back, and releases merge only on matching proof.

Ask about this presentation

Chapters

  1. 0:00claude-ops 3.11.0
  2. 0:14Outbound gate
  3. 0:38ops-desk archiving
  4. 0:57ops-inbox proof
  5. 1:18Monitor-only daemon
  6. 1:40AWS audit dates
  7. 2:05ops-release gates
  8. 2:28Upgrade
Show transcript

claude-ops 3.11.0

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace
claude-ops version3.11.0

Sends, archives and releases now wait for proof

Business Operating System for Claude Code

claude-ops 3.11.0 changes what your agents may do without you. Messages leave only through your host's approved outbound gate, archives need your approval and a read-back, and releases merge only on matching proof.

Outbound gate

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

Every send goes through your host's approved outbound gate

BEFORE · OPS-LEADGEN
You type ok→ /tmp/.claude-send-ok→ send
NOW · OPS-DESK, OPS-INBOX, OPS-LEADGEN
Gate shows recipient and full text→ your yes→ one send
Removed from ops-inbox: mcp__gog__gmail_send mcp__whatsapp__send_message mcp__plugin_imessage_imessage__reply

Before, typing ok in ops-leadgen wrote a one-shot token file, and the send ran once that file existed. Now ops-desk, ops-inbox and ops-leadgen hand each draft to your host's approved outbound gate, which shows the exact recipient and the full text. Only your yes on those bytes sends it. ops-inbox also loses its direct Gmail, WhatsApp and iMessage send tools.

ops-desk archiving

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

ops-desk asks before it archives a thread

Archive finished items immediately, without asking

archiveShown with its evidence. Archived only after you approve that item.
already_done
info_only
Closed in your task tracker. Mailbox and chats stay as they are.

ops-desk used to archive finished items straight away, without asking. Now a reader agent's archive tag is only a recommendation, and the item is archived only once you approve it. Items marked already done or info only close in your task tracker, and your mailbox and chats stay as they are.

ops-inbox proof

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

Inbox zero now needs proof from the source

Attachments

Read the actual invoice or PDF before stating an amount or due date. Unreadable means the item stays open.

Archive read-back

Read the archived flag back for every WhatsApp JID and LID on the right account. A failed read-back is not inbox zero.

ops-inbox now reads the actual invoice or PDF before it states an amount or a due date, and an unreadable attachment keeps the item open. After an archive, it reads the archived flag back for each of the contact's WhatsApp identities, on the right account. A missing or failed read-back means you aren't at inbox zero.

Monitor-only daemon

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

The daemon can run as a passive monitor

$ bash scripts/ops-daemon.sh --monitor-only --run-once

Off in this mode: configured services, their health checks and cron jobs, agents, notifications, restarts.

DAEMON-HEALTH.JSON · EVERY 30 SECONDS
mode: "monitor_only"
actions_enabled: false
last_health: "unknown"

The daemon gains a monitor-only flag. In this mode it doesn't start your configured services, run their health checks or cron jobs, invoke an agent, or send notifications. Every 30 seconds it writes a health file marked monitor only, with actions disabled. Without the flag, it works as before unless you set up the persistent macOS mode.

AWS audit dates

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

AWS key ages come out the same in every time zone

BEFORE · GNU DATE
1970
date -d "$1" … || echo 0

An unparsed date became 0, so the key's age counted from 1970.

NOW · PYTHON 3 · TIME ZONE REQUIRED
UTC1 day
US Eastern1 day
UTC+91 day

The same moment, tested in three zones. A bad date reports "age unknown".

The AWS audit flags access keys older than your rotation limit. Its old date helper turned any timestamp it couldn't parse into zero, so the key's age counted from 1970. Now Python parses the timestamp and insists on a time zone, and the new test gets the same age in three time zones. An unreadable date reports age unknown. The audit now needs python3.

ops-release gates

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

ops-release merges only on proof from the exact head commit

Sweep: an agent reviews and merges open PRs

Open PRs against main stop the release (--no-sweep acknowledges them)

MERGE NEEDS, ON THE EXACT HEAD COMMIT
✓Copilot review
✓Every review thread resolved
✓6 required checks pass. Skipped doesn't count.
ops-release: v3.11.0 merged, NOT tagged: …
ops-release: recover with: git … tag -a v3.11.0 … && git push origin v3.11.0

ops-release now fails closed. Open pull requests against main stop the run, where the old sweep had an agent review and merge them. The merge needs a Copilot review, every review thread resolved, and all six required checks passing on the exact head commit. A skipped check no longer counts. If tagging fails, it says merged, not tagged, and prints the recovery command.

Upgrade

claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace

Update the ops plugin, then check your outbound gate

/plugin marketplace update ops-marketplace

then update the ops plugin

CHECK FIRST

Each channel you send on needs an approved outbound gate on your host.

Without one, drafts stay pending with a diagnostic.

github.com/Lifecycle-Innovations-Limited/claude-ops/releases/tag/v3.11.0

To upgrade, run plugin marketplace update for ops-marketplace, then update the ops plugin. Then check that every channel you send on has an approved outbound gate on your host. Where it doesn't, ops-desk, ops-inbox and ops-leadgen keep the draft pending with a diagnostic. That's claude-ops 3.11.0, where sends, archives and releases wait for proof.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️