Mail
Changelog
Read Mail CLI release notes, including new capabilities, changes and fixes.
Notable changes to @wirecat/mail-cli. One section per version, newest first.
0.1.1 — 01.11.2026
Fixed
- The docs take you from
syncto a first found email, and say how the password is really kept. Installation, usage and the docs index end withmemo search mail, sincemailfills the shared store and memo searches it. The password is kept in the keyring, falls back to a private file when the keyring fails, and can come fromMAIL_PASSWORD; it is never read from stdin.rate_limitednames both causes: the server limiting the account, andsyncrunning out of its own request budget. The docs also say thatmemo mail deletemoves Gmail mail to Trash.
0.1.0 — 31.10.2026
Added
mailreads a mailbox over IMAP into the shared WireCat store, and never changes the mailbox.memoand the other WireCat tools then search and read that mail on your computer.maildoes not send mail.session startsigns a profile in with an app password. A new profile takes--address, or asks for it at a terminal. It finds the server through a built-in table (Yandex, Gmail, iCloud, Mail.ru, Fastmail), the MX record, Thunderbird's ISPDB and the domain's autoconfig file;--provider, or--hostwith--portand--security, sets it by hand and skips those lookups. It shows the steps to prepare the mailbox, asks for the app password with no echo (or readsMAIL_PASSWORD), checks it on the server, and only then saves the profile and keeps the password in the OS keyring. Without a terminal it never asks and names the missing option or variable. An app password that Himalaya already keeps in the keyring is used whenmailhas none. The steps for every provider are on Prepare the mailbox. Outlook and Microsoft 365 accept only OAuth, sosession startrefuses them for now.session status,session endandsession listmanage the sign-in.session status --checklogs in to prove the password still works;session endforgets the password and keeps the synced mail;session listtakes no profile and lists the profiles on this computer.account checkandfolders listlog in and show what the server supports, and the folders with their role and message counts.syncreads new mail into the shared store and skips what is already there. It reads INBOX and Sent unless--folderor the profile names other folders, newest first, from--since-time(default: the last 30 days). A date alone starts at local midnight, and the answer gives the time zone and the window in UTC.--limitcaps the new messages of one run and--rescanlists the whole window again. It saves text and headers, not attachments.- A big mailbox syncs over several runs.
syncspends a request budget sized to its deadline (15 minutes at a terminal, 45 seconds over MCP;--timeoutand--max-pageschange it), saves after each part and answersstate: partialwith the command to go on.mail <profile> statusshows how far it is, also while a sync runs. When messages were left unread or deletions were not checked, the answer says so inmeta.issues. syncsurvives a flaky server. A dropped connection is reopened after a short wait and the run goes on; a message the server cannot answer now is asked for again at the end of the run and left for the next one. On a server with no message ids, such as Yandex, each new message is downloaded once and stored mail is not read again.- AI agents use
mailthrough MCP and a skill.mail <profile> mcp serveoffers the profile's commands to an agent over stdio, or over HTTP behind your own tunnel with--http; the profile's permissions decide what runs, and--permissiononly tightens them.mail skill installinstalls the tool's instructions for Claude Code, Codex, Gemini CLI and OpenClaw, and for Hermes with--for hermes. - The app password falls back to a private file when the keyring fails, and is never asked about.
session startkeeps the password incredentials.json(mode 600) in the config folder, says so once on stderr, and answerscredential_storage.--credential-storage filechooses the file outright, not recommended.session statuscan answerpassword_from: "file". - A run with moved folders never removes the owner's app password from the OS keyring. Such a run reads the owner's
password but never replaces or removes it, and stores a new one in a temporary entry.
session endon the owner's password removes nothing and answerskept: "owners-sign-in". wcat mailruns the tool, andwcat --helplists it. The package installswcat-mailbesidemail, andwcat-mail --wcat-describeprints the tool's name, version and description forwcat.doctor --onlinesays whether a newer version is published. It makes no call to the mail server.- The commands every WireCat tool shares:
doctor,commands,config,skill,runsandupgrade.