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.
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.
Slide text
claude-ops3.11.0
OUTBOUNDdesk, inbox, leadgen
ARCHIVEops-desk
INBOXops-inbox
DAEMON--monitor-only
AWSops-aws-audit.sh
RELEASEops-release
UPGRADEops-marketplace
claude-opsversion3.11.0
Sends, archives and releases now wait for proof
Business Operating System for Claude Code
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.
Slide text
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_sendmcp__whatsapp__send_messagemcp__plugin_imessage_imessage__reply
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.
Slide text
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_onlyClosed in your task tracker. Mailbox and chats stay as they are.
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.
Slide text
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.
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.
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 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.
Slide text
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".
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.
Slide text
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
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.
Slide text
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.