projects_write
Add, update, or delete project items, or create status updates in a GitHub Project.
This record as markdown: /tools/github/projects-write.md
What projects_write does on GitHub
AI agents call projects_write to permanently remove resources in GitHub, typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.
| Parameter | Type | Required | Description |
|---|---|---|---|
body | string | — | The body of the status update (markdown). Used for 'create_project_status_update' method. |
owner | string | — | The project owner (user or organization login). The name is not case sensitive. |
method | string | — | The method to execute |
status | string | — | The status of the project. Used for 'create_project_status_update' method. |
item_id | number | — | The project item ID. Required for 'update_project_item' and 'delete_project_item' methods. |
item_repo | string | — | The name of the repository containing the issue or pull request. Required for 'add_project_item' method. |
item_type | string | — | The item's type, either issue or pull_request. Required for 'add_project_item' method. |
item_owner | string | — | The owner (user or organization) of the repository containing the issue or pull request. Required for 'add_project_item' method. |
owner_type | string | — | Owner type (user or org). If not provided, will be automatically detected. |
start_date | string | — | The start date of the status update in YYYY-MM-DD format. Used for 'create_project_status_update' method. |
target_date | string | — | The target date of the status update in YYYY-MM-DD format. Used for 'create_project_status_update' method. |
issue_number | number | — | The issue number (use when item_type is 'issue' for 'add_project_item' method). Provide either issue_number or pull_request_number. |
Parameters from the server's own tool schema.
Why projects_write is rated Critical
The tool explicitly supports 'delete project items', which is an irreversible destructive operation. Per the rules, when a tool spans categories, the most severe applies — Destructive takes precedence over Write. Misuse could remove project tracking data across an organization's GitHub Projects.
From the tool's definition Add, update, or delete project items, or create status updates in a GitHub Project.
Risk signalsAccepts raw HTML/template content (body) · High parameter count (15 properties)
Attacks that exploit this kind of access
The rule that runs projects_write safely
PolicyLayer is an MCP gateway: it sits between your AI agents and GitHub, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For projects_write, this is the rule to start with:
projects_write is removed from the agent's tool list entirely, so the agent never calls it. The rest of the server keeps working.
The button opens the PolicyLayer dashboard: create your workspace, connect GitHub, apply this rule, and every projects_write call is checked against it from then on.
Questions about projects_write
Add, update, or delete project items, or create status updates in a GitHub Project. It is categorised as a Destructive tool in the GitHub MCP Server, which means it can permanently delete or destroy data. Block by default and require explicit approval.
projects_write accepts 12 parameters: body, owner, method, status, item_id, item_repo, item_type, item_owner, owner_type, start_date, target_date, issue_number. The full parameter table on this page comes from the server's own tool schema.
Register the GitHub MCP server in PolicyLayer and add a rule for projects_write: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches GitHub. Nothing to install.
projects_write is a Destructive tool with critical risk. Critical-risk tools should be blocked by default and only enabled with explicit human approval.
Yes. Add a rate_limit block to the projects_write rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for projects_write. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
projects_write is provided by the GitHub MCP server (oci:ghcr.io/github/github-mcp-server:1.3.0). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on GitHub, and thousands of servers like it.
Across the catalogue