Service eligibility and regional restrictions
PuppyIP serves only compliant overseas businesses and their authorized personnel. Proxy services are not available in mainland China. The service may only be used for lawful business activities outside mainland China. Use of this service within mainland China is prohibited.
Hosting a proxy IP or server overseas does not change these restrictions. The service must not be provided to end users in mainland China through relaying, forwarding, sharing or resale. Before use, read the Terms of Service.
Key Takeaways
- Project tags remain an Enterprise beta. Privacy, retention, data residency and an organization’s own model-provider configuration can make it ineligible.
- A project supports up to 16 tags, with one value per tag. Names and values are visible to everyone in the organization.
- Claude Code needs attributionProject, with terminal version 2.1.305 or later or Desktop 3.6556.1 or later. No project assignment means no warning and no project tag.
- Reports run through yesterday UTC. Tags take about two hours and do not reassign earlier spend; amounts include discounts, exclude credits and omit seat-covered usage.
Which organizations and roles are eligible?
The current help article describes project tags as a Claude Enterprise beta, automatically available to eligible organizations without a separate enablement switch. Organizations with a HIPAA configuration, customer-managed encryption keys (CMEK), zero data retention (ZDR, including Claude Code ZDR), minimal data retention or data stored outside the US are excluded. Organizations routing Claude Desktop through their own model provider are also excluded.
Data storage location is an organizational data-residency condition, not a requirement that the user be in the US. Changing network egress does not change eligibility. The article does not separately establish feature pricing or a country-by-country availability list. It says Updated this week, which does not establish an exact launch date or delivery time for every organization.
Creating tags and managing values requires a Primary Owner, Owner or custom role with Owner access. Setting a project’s tags requires Can edit access. Viewing tagged spend requires those Owner roles or a custom role with both Analytics view and Billing view access. Only the Primary Owner can create API keys.
Create the cost-code tag, then assign a project value
An Owner creates a tag, such as cost_code, under Organization settings > Organization > Project tags. Names must be lowercase without spaces and cannot be renamed later. Choose Predefined values only or Any value. A predefined list can be entered one value per line or imported from a single-column CSV headed value.
A project editor chooses a tag and value under Tags > Add tag. Each project supports up to 16 tags and one value per tag. For example, cost_code=CC-1042 follows the official example; it is not a real finance code. Everyone in the organization can see names and values, so exclude client secrets and other sensitive content. Values can contain spaces and commas and be up to 256 characters long, but values relying on invisible characters may be rejected.
Which work is attributed to a project?
Chat within a project and the unified chat and Cowork experience in a project support attribution. A Cowork task on your computer requires Claude Desktop 3.6556.1 or later and one selected project. Terminal or desktop Claude Code is supported after assigning a project, with Claude Code 2.1.305 or later or Claude Desktop 3.6556.1 or later.
This beta excludes Claude Code on the web, Claude for Office, Claude in Chrome, Claude Design, Claude in Slack and Microsoft Teams, Artifacts and Voice mode. It also excludes the Claude API and Claude Console. Claude Code accessed through Amazon Bedrock, Google Cloud Vertex AI, a gateway or an API key is outside the supported scope as well.
Work outside a project receives no project tag. Identify the actual product surface and session assignment before interpreting missing spend. Installing a client, opening a project or setting one tag does not establish attribution for every product.
Explicitly set attributionProject for Claude Code
Claude Code has no project picker. Open the project in Claude and copy the final segment of its URL. Set that project ID in the repository’s .claude/settings.json, or use the documented ~/.claude/settings.json path to apply it across repositories.
Configuration example: {"attributionProject":"PROJECT_ID"}. Replace PROJECT_ID with the ID from the project URL and keep the entire file valid JSON. The example is not a line to append arbitrarily to any file position. A repository-level setting takes effect after you trust the folder when Claude Code prompts.
Without a project assignment, Claude Code usage is not tagged and no warning appears. Administrators need to communicate that condition to users. This article reviewed public documentation only; no settings, organization dashboard or real session were opened or changed.
Why can rows be missing or differ from an invoice?
Under Organization settings > Usage > Spend by project, select a tag in Group by, then narrow results with Period and Product. Data runs through the end of yesterday UTC, not a live balance. Export CSV downloads the available results.
Set tags before work begins: they take about two hours to apply. Earlier spend is not reassigned to the new tag. Changing a tag does not rewrite past spend, and usage during the transition can remain under the old tag or no tag. Reporting begins when the feature becomes available to the organization; earlier dates are not a complete history.
A project with no usage in the selected dates is absent. Spend outside projects appears as Not in a project, including unassigned Claude Code sessions. A project without a value for the selected tag appears under No tag value. A missing row or delayed update does not by itself establish zero spending.
Amounts include discounts but are before credits. Recent figures can change until about a week after month end. Seat-covered usage is excluded, so a project used mostly through seats can show little or no spend. Treat this as scoped cost attribution, not a complete invoice, seat-usage report or spending cap by tag.
Separate permissions, IDs and pagination before using APIs
The project-tag Admin API and usage/cost reporting API are both in beta, with paths and names subject to change. Tag access uses read:project_tags and write:project_tags scopes. The current Admin API can list tags, add values and set a project’s tags; it cannot create tags, archive values or create projects. It uses a claude_proj_ ID rather than the project URL ID, so do not reuse the attributionProject value blindly.
Cost reporting requires the Analytics API to be enabled and a key with read:analytics. Daily buckets cover at most 31 days per call, with up to 1000 returned rows. Continue pagination when has_more is true rather than treating the first page as the total. Amounts are in cents and can include fractions of a cent. Tag filter text travels in the URL and may enter request logs. Check the current official beta instructions for an integration, and keep real keys, cost codes and raw organization reports private.
Sources
Frequently Asked Questions
Does a Required tag lock every project and prevent editors from changing it?
No. Required applies only to new projects created on the web, not existing projects. Web users can change a required value but cannot remove it; the Admin API can still remove it. Project editors can change tags, and tags cannot currently be locked. A predefined list restricts selection but does not validate codes against finance systems.
Can one project split its spend between two values of the same cost-code tag?
No. A tag has one value per project. The beta does not support splitting spend across tags or tagging an individual chat or session. You can use several different tag categories, up to 16, but that does not create tag-level spending limits.
Are private project names hidden from every report?
No. Spend by project and its CSV show Private project, but the Analytics dashboard, Analytics API and Compliance API still show the real names. Masking in one page does not establish masking across all analytics interfaces.