GitShow/jaredpalmer/mogcli
jaredpalmer

mogcli

Agent-friendly CLI for M365

by jaredpalmer
Star on GitHubFork

Go

212 stars16 forks3 contributorsActive · 1mo agoSince 2026v0.0.2

Meet the team

See all 3 on GitHub →
errazuriz
errazuriz1 contribution
mikejuyoon
mikejuyoon1 contribution

Languages

View on GitHub →
Go95.4%
Python2%
Shell1.9%
Makefile0.7%

Commit activity

Last 12 weeks · 1 commit

Full graph →

Community health

1 of 6 standards met

Community profile →
28
✓README○License○Contributing○Code of Conduct○Issue Template○PR Template

Recent PRs & issues

Active · 2 in progress · Last activity 1mo ago
See all on GitHub →
jaredpalmer
Pull in Teams integration, mail workflows, and safety improvements from johntheyoung/mogcliOpenPR

Summary Merges the improvements from the johntheyoung/mogcli fork (16 commits, preserved with original authorship), reviewed commit-by-commit: Teams integration , , with enterprise-delegated-only capability rules , , (opens/reuses one-on-one chats) , plus support with proper HTML escaping (dry-run output deliberately omits AAD object IDs) : guarded file sharing via OneDrive with tenant/guest checks, SHA-256 content verification, permission auditing, no-retry semantics for non-idempotent operations, and rollback on failure Mail and -scoped with immutable ID preference , , with distinct action allowlist entries, disabled auto-retries on moves, and explicit indeterminate-outcome errors Bounded mutation JSON output (excludes body, recipients, and other unbounded/sensitive fields) Safety / agent controls / runtime allowlists fail-closed mode for headless automation Agent skill doc () Calendar availability on create/update Conflict resolution: the fork predates #5 (), so , , , and tests were merged to keep both feature sets (draft + folders/archive/move/mark-read). Follow-up commit: generalized SKILL.md, which referenced the fork author's specific deployment (profile names, env paths, gateway tooling), and documented in it. Test plan [x] [x] [x] — all packages pass [x] Smoke-tested and on the built binary Generated with Devin

jaredpalmer · 1mo ago
johntheyoung
Add Teams integrationOpenPR

Summary add Teams commands for listing joined teams, listing channels, and sending channel messages add Teams chat commands for listing chats, sending to an existing chat, and sending one-on-one DMs add delegated Teams channel/chat scopes and enterprise delegated-only runtime gating add granular action allowlisting via --enable-actions / MOG_ENABLE_ACTIONS for safer agent command exposure add a standalone skill for safe Microsoft 365 automation via mog update README and auth help for Teams workloads Verification go test ./... git diff --check go build -o bin/mog ./cmd/mog ./bin/mog teams --help ./bin/mog teams chat-send --help ./bin/mog teams dm-send --help /home/jmy/code/hermes-agent/venv/bin/python /home/jmy/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/mog MOG_PROFILE=dexterton MOG_ENABLE_COMMANDS=teams MOG_ENABLE_ACTIONS=teams.dm-send ./bin/mog --json teams dm-send --to john.young@dexterton.com --body "DM support smoke test" --dry-run MOG_PROFILE=dexterton MOG_ENABLE_COMMANDS=teams MOG_ENABLE_ACTIONS=teams.chats ./bin/mog --json teams chats --max 1

johntheyoung · 1mo ago

Recent fixes

View closed PRs →
errazuriz
feat: add mail draft subcommandMergedPR

Summary Adds subcommand to create draft messages via Graph API () Recipients are optional — drafts can be created without and completed later in Outlook Includes support following the existing pattern Uses scope (required for creating messages) Supports both delegated and app-only auth modes Usage Changes : Add method and : Add struct and method : Add capability constant and rule : Add flag parsing tests (with and without recipients) Test plan [x] All existing tests pass () [x] New tests: , [x] verified manually [x] output verified 🤖 Generated with Claude Code

errazuriz · 1mo ago
rtavasarala
feat: Add SharePoint support and Bubble Tea TUIMergedPR

Summary This PR adds SharePoint support and an interactive Bubble Tea TUI to mogcli. New Features SharePoint Support () Sites: List, get by ID/URL/path, search, get root site Lists: List lists in sites, get list details, list list items Drive (Files)**: List drive items, download files, get metadata New auth scopes: , Bubble Tea TUI () Interactive terminal UI using Charm's Bubble Tea framework Views: Dashboard, Mail, Calendar, Files (OneDrive), SharePoint Sites Keyboard navigation: , , , , , Files Changed Added SharePoint scopes Added SharePoint and TUI commands Added SharePoint capability rules SharePoint CLI commands (NEW) TUI command launcher (NEW) SharePoint Graph API service (NEW) Bubble Tea TUI framework (NEW) Usage Examples Testing All existing tests pass Build succeeds with no errors Tested help output for new commands

rtavasarala · 4mo ago
mikejuyoon
feat: support client_secret in delegated token refreshMergedPR

Summary Two features that together enable fully headless/browserless delegated authentication for confidential client Entra ID apps: 1. / in delegated mode — Persists the client secret and includes it in token refresh requests. Required for confidential client app registrations that enforce on all token requests. 2. / in delegated mode — Seeds the token cache from a pre-existing refresh token via an immediate token exchange, bypassing the device code flow entirely. No browser needed. Zero behavior change for existing public-client users — all new code paths are gated on the presence of a stored secret or provided refresh token. Motivation Enterprise Entra ID apps are commonly registered as confidential clients (web app type), which require on all token requests — including refresh. Without these changes: Delegated mode fails with for confidential clients (no in refresh) There's no way to authenticate headlessly — always requires a browser for the device code flow The only workaround is app-only mode, which changes the permission model (application vs delegated) Example: Fully headless login Changes Design decisions scope for confidential clients: When a delegated secret is stored, both and use instead of individual scope names. This avoids consent errors that occur when individual scopes (e.g., ) weren't part of the original consent flow. The scope inherits all permissions already consented on the app registration. Secret stored under : Separate from to avoid collision between delegated and app-only modes on the same profile name. Refresh token preserved when server doesn't rotate: If the token endpoint doesn't return a new refresh token, the original is preserved in the cache. Test plan [x] All existing tests pass () [x] New: refresh request includes when stored [x] New: refresh request omits when not stored (regression) [x] New: with persists to keyring [x] New: with skips device code, uses refresh_token grant [x] New: refresh token preserved when server doesn't rotate [x] E2E: headless login + + against live Microsoft 365 tenant

mikejuyoon · 6mo ago
Structured data for AI agents

Repository: jaredpalmer/mogcli. Description: Agent-friendly CLI for M365 Stars: 212, Forks: 16. Primary language: Go. Languages: Go (95.4%), Python (2%), Shell (1.9%), Makefile (0.7%). Latest release: v0.0.2 (7mo ago). Open PRs: 2, open issues: 0. Last activity: 1mo ago. Community health: 28%. Top contributors: errazuriz, mikejuyoon.

·@ofershap

Replace github.com with gitshow.dev