Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
단일 바이너리 Microsoft Teams CLI, AI 에이전트·CI/CD·개발자용, JSON 출력·결정적 종료코드·Graph 인증 위임
Single-binary Microsoft Teams CLI for AI agents, CI/CD pipelines, and developers. JSON output, deterministic exit codes, and delegated Graph auth.
개발 도구RustGitHub @osodevops온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
A fast, single-binary Microsoft Teams CLI built in Rust — agent-first design, structured JSON output, real-time webhooks, and full Graph API coverage
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
teams — Microsoft Teams CLI for AI Agents and Developers (Rust)
A fast, single-binary CLI that gives AI agents and automation full access to Microsoft Teams via the Microsoft Graph API.
Every command returns structured JSON with deterministic exit codes — designed from the ground up for autonomous agents (Claude, GPT, custom LLM agents), CI/CD pipelines, and developer scripts. Not a chatbot framework. A tool that agents wield.README 전문 보기 ↗A fast, single-binary CLI that gives AI agents and automation full access to Microsoft Teams via the Microsoft Graph API.
Every command returns structured JSON with deterministic exit codes — designed from the ground up for autonomous agents (Claude, GPT, custom LLM agents), CI/CD pipelines, and developer scripts. Not a chatbot framework. A tool that agents wield.
Website: msteamscli.com
AI agents need to operate in Microsoft Teams — reading messages, posting updates, managing channels, reacting to events — but there is no comprehensive CLI for Teams. Existing MCP servers cover only a fraction of the Graph API. Bot Framework SDKs assume a conversational UI inside Teams, not an external agent calling in.
teams-cli fills this gap: a complete, headless, machine-readable interface to Teams that any agent can call as a subprocess.
Every command, when piped or called programmatically, returns a JSON envelope:
{
"success": true,
"data": { "id": "...", "displayName": "Engineering", "..." : "..." },
"metadata": {
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-03-15T00:00:00Z",
"duration_ms": 123
}
}
Paged list results add metadata.has_more (more pages exist) and, when true, metadata.next_link (Graph's @odata.nextLink). With --all-pages, has_more is false. Human and plain output note truncation on stderr.
On failure:
{
"success": false,
"error": {
"code": "AUTH_TOKEN_EXPIRED",
"message": "Access token has expired. Run `teams auth login` to re-authenticate."
}
}
Exit codes map directly to error categories — agents can branch on $? without parsing:
| Code | Meaning | Agent Action |
|---|---|---|
| 0 | Success | Parse .data from stdout |
| 1 | General error | Log and investigate |
| 2 | Invalid arguments | Fix command syntax |
| 3 | Authentication error | Re-authenticate |
| 4 | Permission denied (403) | Escalate or skip |
| 5 | Resource not found (404) | Handle missing resource |
| 6 | Rate limited (429) | Back off and retry |
| 7 | Network error / timeout | Retry with backoff |
| 8 | Server error (5xx) | Retry with backoff |
| 10 | Configuration error | Check config/env vars |
A closed stdout pipe (e.g. teams team list | head -1) is treated as normal early termination: exit 0, nothing on stderr. Errors that occur while the pipe is already closed still return their real exit code.
Output auto-detection: When stdout is a TTY, output defaults to human-readable tables. When piped (which is how agents call it), output defaults to JSON. Override with --output json|human|plain.
# Homebrew (macOS/Linux)
brew install osodevops/tap/teams-cli
# Scoop (Windows)
scoop bucket add osodevops https://github.com/osodevops/scoop-bucket
scoop install teams
# Pre-built binaries — download from GitHub Releases
# https://github.com/osodevops/ms-teams-cli/releases
# From source
cargo install --git https://github.com/osodevops/ms-teams-cli
Install the agent skills so Claude, Codex and other AI agents know how to drive teams: sign-in and output contract, messaging, team administration, and automation.
npx skills add osodevops/ms-teams-cli
npx skills add osodevops/ms-teams-cli --skill teams-cli-messaging
| Skill | Use it for |
|---|---|
teams-cli-setup | Install, sign in, profiles, CI auth, JSON envelope and exit codes |
teams-cli-messaging | Read, send and reply in chats and channels, attachments, files |
teams-cli-admin | Teams, channels, members, tags, apps and tabs |
teams-cli-automation | Presence, meetings, notifications, webhooks and polling |
docs/man/teams.1, docs/man/teams-config.5, docs/man/teams-auth.7, docs/man/teams-agent-contract.7, docs/man/teams-examples.7# 1. Sign in with the built-in OSO public client app
teams auth login --device-code
# 2. Check auth, tenant, token type, and consent URL
teams auth doctor --output json
# 3. Read Teams context
teams user me --output json
teams chat list --page-size 10 --output json
teams team list --output json
# 4. Send only to a known safe test chat or channel
teams message send --chat <chat-id> --body "teams-cli smoke test" --output json
Use a dedicated test target for first writes. Do not test against client or production chats.
The CLI has OSO's multi-tenant delegated public client app baked in:
Client ID: fba1b5d0-fdd0-4fe2-9729-9ccdc38f9595
Default authority: organizations
Loopback redirect URI: http://localhost/callback (any port)
Customer admin consent:
teams auth consent-url --tenant-id <customer-tenant-id-or-domain> --output json
This prints a Microsoft identity platform v2 admin-consent URL with an explicit
scope parameter for the CLI's default delegated Graph scopes.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗