DingTalk Workspace CLI (dws)
DingTalk Workspace CLI
Official DingTalk CLI with agent skills: chats, calendar, todos, mail, docs and approvals of your organization from the terminal
- 3,784 ★ on the repository
- Last commit
- Apache-2.0
Broad access
Why this level
- Commands read and write organization data: messages, mail, calendar, docs and approvals
- Sign-in gives the agent access to a DingTalk account and tokens, and the --yes flag removes confirmation prompts
- The install script downloads and runs a binary, and skills are written into agent directories
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add cli/dingtalk-workspace-cliDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- Commands read and write organization data: messages, mail, calendar, docs and approvals
- Sign-in gives the agent access to a DingTalk account and tokens, and the --yes flag removes confirmation prompts
- The install script downloads and runs a binary, and skills are written into agent directories
This is third-party code. Review the repository files before installing.
What it does
The dws command bundles DingTalk products into a single executable with JSON output, so an agent can read and change organization data without manual clicks. It covers contacts, chats and bots, calendar with meeting rooms, todos, OA approvals, attendance, reports, AI Table bases, docs, drive, meeting minutes, mail, sheets and the wiki. A direct call to server-side OpenAPIs is available through the api command. For agents the project installs Agent Skills in two layouts. The default is a per-product set such as dingtalk-calendar and dingtalk-chat that keeps context small, while the mono mode installs one shared dws skill. For safer agent runs there are --dry-run (show the request without executing), --yes (skip confirmations) and --jq (extract the fields you need). The dws dev connect command bridges a DingTalk robot to a local AI CLI such as Claude Code or Codex: you mention the bot in a chat and it answers with the help of the agent.
Who it is for. For teams that work in DingTalk and for developers who want to automate chats, calendar, approvals and documents of an organization through an agent.
Good fit when
- You want the agent to find free time for attendees and book a meeting room in the DingTalk calendar
- A summary of tasks, approvals or reports must be assembled from several DingTalk sections with one command
- The agent has to search and read docs, sheets and wiki pages of the organization, and leave comments in docs
- A DingTalk bot should connect to a local Claude Code or Codex so it answers in a group chat
- A script or CI job must call DingTalk server-side OpenAPIs with an app token
Not a fit when
- Your organization has not enabled CLI access: without admin approval the dws login will not complete
- You run Alpine or another musl distribution: Linux binaries are built against glibc and the installer stops there
- You need another messenger: the tool works with DingTalk only
- You are not ready to hand an agent the right to send messages and approvals: some commands write organization data
Example request
Show my DingTalk agenda for today and find common free time with Li Ming this weekLimitations
The project is in a co-creation phase and reaches corporate data, so it needs authorization from an organization admin. Building from source requires Go 1.26 or newer and a C compiler. The --yes flag lets an agent skip confirmations and --dry-run helps before risky actions.
Users in mainland China get a Gitee mirror and an install through npmmirror. The project description says nothing about using DingTalk from Russia.
How to disable. Delete the dws binary and the dingtalk-* skills from the agent's skills folder. The skill layout switches with dws skill setup --mode mono or --mode multi. The organization revokes the app's access in the DingTalk developer console.
FAQ
How do I connect DingTalk to Claude Code or Cursor?
Install dws, sign in with dws auth login (dws auth login --device works where there is no browser) and add the skills: npx skills add DingTalk-Real-AI/dingtalk-workspace-cli -g. After that the agent calls dws commands itself. Cursor also has a built-in setup: dws skill setup --mode multi --target cursor.
How do the multi and mono skill modes differ?
Multi installs per-product skills such as dingtalk-aitable and dingtalk-calendar and suits single-product tasks with a small context. Mono installs one dws skill, convenient for cross-product workflows. The dws commands are identical in both modes.
What if my organization has not enabled CLI access?
After choosing the organization, click Apply Now: an admin receives a request card and approves it in one click. Admins can also enable access themselves under CLI Access Management on the DingTalk developer platform. Run dws auth login again once approved.
How are tokens stored?
Tokens are encrypted with PBKDF2 and AES-256-GCM and tied to the device, with Keychain or DPAPI as an extra layer. By default a token is sent only to *.dingtalk.com domains, and the list is set through the DWS_TRUSTED_DOMAINS variable.
How do I update dws?
With dws upgrade. The --check flag only looks for a new version, --list shows stable releases, --beta switches to the beta channel, --version installs a chosen release and --rollback restores the previous version from the automatic backup. The update verifies size and SHA256, and the old install stays if anything fails.
Discussion
No questions or reviews yet.
Related
CLI toolsLark CLI
lark-cli
The official Lark and Feishu CLI with agent skills: messages, docs, sheets, calendar, mail and tasks from the terminal, over 200 commands
A library of 229 skills for work and life: sales, marketing, finance, engineering, design and parallel agent runs
A CLI for every Google Workspace API with JSON output and agent skills: Drive, Gmail, Calendar, Sheets and more
A Slack CLI and skill: the agent reads channels and threads and searches messages and files, and drafts or sends only when you ask
Claude-to-IM
claude-to-im
A bridge between Claude Code or Codex and messengers: talk to the agent from Telegram, Discord, Feishu, QQ or WeChat
Official Todoist command line with an agent skill: tasks, projects and inbox from the terminal
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| DingTalk Workspace CLI (dws) (this entry) | yes | 3,784 | ||
| gws | no | 31,797 | a similar CLI with JSON output and skills, but for Google Workspace APIs | |
| Slack MCP Server | no | key is optional | 1,872 | an MCP server for the Slack messenger, unrelated to DingTalk |
| Lark CLI | yes | 17,807 | the official Lark and Feishu CLI with agent skills |
README in short
The project page presents dws as a universal DingTalk command-line tool for people, agents and admins. It covers installation paths (script, npm, Homebrew, prebuilt binaries, building from source), OAuth sign-in in device mode and a custom-app mode for CI, a table of services and security sections. Upgrades through dws upgrade, mirrors for mainland China and an OpenHarmony build are covered separately.