Skip to main content

outlook-cli

Microsoft Outlook from your terminal—for humans and agents.

outlook-cli is an early Rust CLI for Outlook mail and calendars through the supported Microsoft Graph API. It aims to provide calm terminal workflows for people and a deterministic, introspectable command contract for automation.

Current milestone

  • Work/school and personal Microsoft accounts through delegated OAuth
  • Tokens protected by the operating system credential store
  • Inbox listing, message reading, sending, replying, and moving
  • Calendar agenda and event creation
  • Text output on a terminal and JSON when piped
  • Read-only profiles, bounded collections, stable errors, and CLI Spec v0.3

Build

cargo build
cargo test

Install

cargo install outlook-cli --locked
# or, without a Rust toolchain
uv tool install outlook-cli-rs

Both packages install the outlook executable.

Configure

outlook-cli includes a maintained multitenant Microsoft Entra public-client registration, so the normal setup is simply:

outlook init

The registration requests delegated Microsoft Graph permissions only: User.Read, Mail.ReadWrite, Mail.Send, and Calendars.ReadWrite. A read-only profile requests Mail.Read and Calendars.Read instead.

For a staged or headless setup:

outlook init --no-login
outlook auth login

Read-only profiles also block remote writes locally:

outlook init --read-only

Organizations with restrictive consent policies can use their own public-client registration. Enable public client flows and supply its Application (client) ID:

outlook init --client-id YOUR_APPLICATION_ID

The same override is available through OUTLOOK_CLIENT_ID. Tenant policy can still require administrator approval, and the maintained registration is not yet publisher verified while the project is in its early development phase.

For short-lived automation, OUTLOOK_ACCESS_TOKEN overrides stored credentials.

Commands

outlook inbox --limit 20
outlook mail read MESSAGE_ID
printf 'All set.' | outlook mail reply MESSAGE_ID --body -
outlook mail send --to person@example.com --subject 'Hello' --body 'Hi'
outlook mail move MESSAGE_ID --destination archive
outlook calendar agenda --start 2026-09-03T00:00:00Z --end 2026-09-10T00:00:00Z
outlook calendar create --subject 'Project sync' \
  --start 2026-09-04T09:00:00 --end 2026-09-04T09:30:00 \
  --timezone Europe/Amsterdam --attendee person@example.com
outlook doctor --offline
outlook schema --command 'mail send'

Message and event requests opt into Graph's immutable Outlook IDs. Remote writes are blocked when the active profile is read-only. Stdout contains data; diagnostics and sign-in instructions go to stderr.

Status

The command surface is under active development. A keyboard-first TUI, drafts, attachments, search, meeting responses, contacts, and delta synchronization are planned after the core Graph and authentication contracts settle.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

outlook_cli_rs-0.1.0.tar.gz (49.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

outlook_cli_rs-0.1.0-py3-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file outlook_cli_rs-0.1.0.tar.gz.

File metadata

  • Download URL: outlook_cli_rs-0.1.0.tar.gz
  • Upload date:
  • Size: 49.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for outlook_cli_rs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fe212755d681b8e206e16cb33ac2477ce4ed9177cd0386890d63b014c5a31833
MD5 6f39f00275cb8c4846d04c0a121cf548
BLAKE2b-256 904e10371528c6f24fbf14e9a4fb4c6d9661dd0a22aa74038c2a0c82395355e4

See more details on using hashes here.

File details

Details for the file outlook_cli_rs-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for outlook_cli_rs-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f51e572fb55941e893fb8d512e465ae568aa2058dcda34400bfbe046171bc0d
MD5 1273e8224ac0e71ea9d839715cd4545e
BLAKE2b-256 2d553752b86055751783bede147e624fd4e91f80bcab80166483dd5cc7dec98e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.4

8 files

0.2.3

8 files

0.2.2

2 files

0.2.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page