
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
Figma workspace management from the command line. 85 CLI commands and MCP tools for seats, teams, permissions, billing, onboarding, and org admin. Also works as an MCP server for AI assistants.
npm install -g figmanage
figmanage login
Extracts your Chrome session cookie, prompts for a PAT, and stores credentials locally at ~/.config/figmanage/. One-time setup -- no env vars, no JSON config editing.
figmanage whoami # verify auth
figmanage logout # clear credentials
Commands use a noun-verb pattern: figmanage <group> <action>.
figmanage org seat-optimization # find inactive paid seats
figmanage org offboard sarah@co.com # audit what a user owns
figmanage org offboard sarah@co.com --execute \
--transfer-to jake@co.com # execute the offboarding
figmanage org onboard alex@co.com --teams 123,456 \
--role editor --seat full --confirm # set up a new hire
figmanage org quarterly-report # org-wide design ops snapshot
figmanage org members --search danny # find org members
figmanage navigate list-teams # list all teams
figmanage permissions get file abc123 # who has access to a file
figmanage permissions audit --scope team --id 789 # audit a team's permissions
figmanage branches cleanup 573408414 # find stale branches
figmanage files summary abc123 # pages, components, styles overview
Run figmanage <group> --help for available subcommands. All commands output JSON when piped or when --json is passed.
figmanage runs as an MCP server for Claude, ChatGPT, Cursor, and other AI assistants:
# Claude Code
claude mcp add figmanage -- npx -y figmanage
# Claude Desktop / Cursor / other clients
# Add to your MCP config:
{
"mcpServers": {
"figmanage": {
"command": "npx",
"args": ["-y", "figmanage"]
}
}
}
On first run, figmanage walks you through setup right in the conversation -- extracts your Chrome session cookie, asks you to create a PAT, and stores credentials locally. No env vars, no JSON editing, no separate terminal step.
If you prefer CLI setup or need to reconfigure: npx figmanage login.
Env vars (FIGMA_PAT, FIGMA_AUTH_COOKIE, etc.) override the config file for backwards compatibility. HTTP transport available via --mcp --http <port>.
Use FIGMA_TOOLSETS to expose only specific tool groups:
| Preset | Toolsets |
|---|---|
starter | navigate, reading, comments, export |
admin | navigate, org, permissions, analytics, teams, libraries |
readonly | navigate, reading, comments, export, components, versions |
full | everything (default) |
figmanage uses two Figma API surfaces:
| Client | Auth | Capabilities |
|---|---|---|
| Internal API | Session cookie | Workspace management, search, permissions, org admin, seats, billing |
| Public API | Personal Access Token | Comments, export, file reading, components, versions, webhooks, variables |
Both together give full access to all 85 tools. Cookie-only or PAT-only work but limit available tools.
Auth resolution: env vars > config file > interactive setup (MCP) or figmanage login (CLI).
The tables below list all 85 commands. The Command column shows MCP tool names (snake_case). The CLI equivalent is the noun-verb form: figmanage <group> <action> where <action> is the kebab-case version of the tool name without the group prefix (e.g. list_recent_files becomes figmanage navigate list-recent-files).
| Command | Auth | Description |
|---|---|---|
check_auth | either | Validate PAT and cookie authentication |
list_orgs | cookie | List available Figma workspaces |
switch_org | cookie | Switch active workspace for this session |
list_teams | cookie | List teams in your org |
list_projects | either | List projects in a team |
list_files | either | List files in a project |
list_recent_files | cookie | Recently viewed/edited files |
search | cookie | Search files across the workspace |
get_file_info | either | File metadata: name, project, team, link access |
list_favorites | cookie | Favorited files (broken -- Figma BigInt bug) |
| Command | Auth | Description |
|---|---|---|
create_file | cookie | Create design, whiteboard, slides, or sites file |
rename_file | cookie | Rename a file |
move_files | cookie | Move files between projects (batch) |
duplicate_file | cookie | Copy a file |
trash_files | cookie | Move files to trash (batch) |
restore_files | cookie | Restore files from trash (batch) |
favorite_file | cookie | Add/remove from favorites |
set_link_access | cookie | Set link sharing level |
file_summary | pat | Pages, components, styles, comment counts |
cleanup_stale_files | either | Find old files, optionally trash (dry run default) |
| Command | Auth | Description |
|---|---|---|
create_project | cookie | Create a project in a team |
rename_project | cookie | Rename a project |
move_project | cookie | Move a project to another team |
trash_project | cookie | Move a project to trash |
restore_project | cookie | Restore a project from trash |
set_project_description | cookie | Set or update project description |
organize_project | cookie | Batch-move files into a project |
setup_project_structure | cookie | Create multiple projects from a plan |
| Command | Auth | Description |
|---|---|---|
get_permissions | cookie | List who has access with roles |
set_permissions | cookie | Change a user's access level |
share | cookie | Invite someone by email |
revoke_access | cookie | Remove someone's access |
list_role_requests | cookie | List pending access requests |
approve_role_request | cookie | Accept an access request |
deny_role_request | cookie | Decline an access request |
permission_audit | cookie | Team/project access audit with oversharing flags |
| Command | Auth | Description |
|---|---|---|
list_versions | pat | Version history |
create_version | cookie | Create a named version checkpoint |
| Command | Auth | Description |
|---|---|---|
list_branches | either | List branches of a file |
create_branch | cookie | Create a branch |
delete_branch | cookie | Archive a branch |
branch_cleanup | either | Stale branch detection with optional archival |
| Command | Auth | Description |
|---|---|---|
list_comments | pat | Comments with thread structure |
post_comment | pat | Post a comment |
delete_comment | pat | Delete a comment |
list_comment_reactions | pat | Emoji reactions on a comment |
open_comments | pat | Unresolved comments across a project |
| Command | Auth | Description |
|---|---|---|
export_nodes | pat | Export as PNG, SVG, PDF, or JPG |
get_image_fills | pat | URLs for all images used as fills |
| Command | Auth | Description |
|---|---|---|
get_file | pat | Read file as a node tree with depth control |
get_nodes | pat | Read specific nodes by ID |
| Command | Auth | Description |
|---|---|---|
list_file_components | pat | Components published from a file |
list_file_styles | pat | Styles in a file |
list_team_components | pat | Published components across a team |
list_team_styles | pat | Published styles across a team |
| Command | Auth | Description |
|---|---|---|
list_webhooks | pat | List webhooks for a team |
create_webhook | pat | Create a webhook subscription |
update_webhook | pat | Update a webhook |
delete_webhook | pat | Delete a webhook |
| Command | Auth | Description |
|---|---|---|
list_local_variables | pat | Local variables and collections |
list_published_variables | pat | Published variables from a library |
update_variables | pat | Bulk create, update, or delete variables |
| Command | Auth | Description |
|---|---|---|
library_usage | cookie | Team-level library adoption metrics |
component_usage | cookie | Per-file component usage |
| Command | Auth | Description |
|---|---|---|
list_admins | cookie | Org admins with permission levels |
list_org_teams | cookie | All teams with member and project counts |
seat_usage | cookie | Seat breakdown by type and activity |
list_team_members | cookie | Team members with roles and activity |
list_org_members | cookie | All org members with seats and activity |
contract_rates | cookie | Per-seat pricing |
change_seat | cookie | Change a user's seat type |
billing_overview | cookie | Invoice history and billing status |
list_invoices | cookie | Open and upcoming invoices |
org_domains | cookie | Domain config and SSO/SAML |
ai_credit_usage | cookie | AI credit usage summary |
export_members | cookie | Trigger CSV export of all members |
workspace_overview | cookie | Org snapshot: teams, seats, billing |
seat_optimization | cookie | Inactive seat detection with cost analysis |
offboard_user | cookie | Audit + execute user departure |
onboard_user | cookie | Batch invite to teams, share files, set seat |
quarterly_design_ops_report | cookie | Seat utilization, billing, teams, library adoption |
| Command | Auth | Description |
|---|---|---|
list_org_libraries | cookie | Design system libraries with sharing info |
| Command | Auth | Description |
|---|---|---|
create_team | cookie | Create a team |
rename_team | cookie | Rename a team |
delete_team | cookie | Delete a team |
All parameters that accept Figma IDs are validated against /^[\w.:-]+$/ before use. Rate limit retries are restricted to safe HTTP methods. Mutations are never retried. Billing responses strip PII. Destructive operations default to dry-run mode. Config file is stored with 0o600 permissions.
favorite_file works fine.figmanage login --refresh to renew.depth param or get_nodes.git clone https://github.com/dannykeane/figmanage.git
cd figmanage
npm install
npm run build
npm test
Three-layer design: shared operations power both the CLI and MCP server.
src/
index.ts Entry: --setup, --mcp, or CLI mode
mcp.ts MCP server setup, toolset presets
setup.ts Cross-platform Chrome cookie extraction
auth/ AuthConfig from env vars and config file
clients/ Axios clients for internal (cookie) and public (PAT) APIs
operations/ Shared business logic (18 modules)
tools/ MCP tool wrappers (thin, call operations)
cli/ CLI Commander wrappers (thin, call operations)
types/figma.ts Shared types including Toolset union
MIT
FAQs
MCP server for managing your Figma workspace from the terminal.
The npm package figmanage receives a total of 79 weekly downloads. As such, figmanage popularity was classified as not popular.
We found that figmanage demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.