CUGA is an enterprise agent harness that turns business requests into actions across applications, APIs, and documents while connecting to tools through MCP, OpenAPI, and Python integrations. Organizations use it to run general-purpose agents in controlled environments, apply approval and execution policies, and configure models and workflows for private or disconnected deployments. The catalogue entries supply instructions and skills for working with the CUGA harness.
Borrowing it
Nothing to install: this file belongs to cuga-project/cuga-agent. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/cuga-project/cuga-agent/main/AGENTS.mdgit clone --depth 1 https://github.com/cuga-project/cuga-agentWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/cuga-project/cuga-agent/agents-md)<a href="https://agentmods.dev/instructions/cuga-project/cuga-agent/agents-md"><img src="https://agentmods.dev/badge/instructions/cuga-project/cuga-agent/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/cuga-project/cuga-agent/agents-md"><img src="https://agentmods.dev/badge/instructions/cuga-project/cuga-agent/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02153 | $0.02153 |
| Opus 5.5 | $0.00861 | $0.00861 |
| Sonnet 5.5 | $0.00431 | $0.00431 |
| Haiku 4.5 | $0.00215 | $0.00215 |
Grade A, and why
cuga-agent AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 126 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Agent guidelines
Declare known arguments explicitly
When a function's arguments are known in advance, declare them explicitly instead
of reading them from **kwargs or **_. Reserve **kwargs for wrappers that
forward arbitrary arguments that cannot be known before runtime.
For LangChain tools, declare runtime-injected context as
Annotated[..., InjectedToolArg]. This keeps context in the validation schema
while excluding it from model-facing schemas. Bind conversation context from
the trusted runtime or captured thread; do not let model-supplied values override it.
Mark tests with their type
Every new or changed test must be marked with a pytest marker that declares its type. Use the markers registered in pyproject.toml ([tool.pytest.ini_options].markers), for example:
@pytest.mark.unit— fast, isolated tests@pytest.mark.e2e— live services / full agent stack@pytest.mark.stability— LLM-backed e2e stability suite@pytest.mark.pgvector— requires pgvector@pytest.mark.load— concurrent load tests@pytest.mark.slow— long-running integration tests@pytest.mark.manual— needs manually started services@pytest.mark.windows_smoke— Windows CI smoke subset
Do not leave tests unmarked when a type marker applies.
CI discovers tests by directory — do not edit workflow YAML
CI shards in .github/workflows/tests.yml (and the matching commands in external-fork-tests.yml) select directories and markers, not individual test_*.py files. A new test is in CI when its directory is one of the shard roots below; adding a file path to YAML is the wrong change.
| New test lives in | CI job | Notes |
|---|---|---|
tests/unit/ or tests/integration/ |
unit-b |
Whole tree is collected; excluded only by marker (manual, pgvector, load, e2e, stability) |
One of the 7 colocated dirs listed in the unit-a step |
unit-a |
Not a src/**/tests/ glob — an explicit list, one pytest process per suite (singleton isolation) |
src/cuga/backend/cuga_graph/policy/tests/ |
policy-a / policy-b |
test_e2e_*.py vs the rest of that directory |
src/cuga/sdk_core/tests/ |
sdk |
CRUD, mocks, supervisor policy invoke tests, and a small live invoke smoke (-m "not e2e"). Live-LLM duplicates (summarization, extra invoke variants, JSON utterance matching) are @pytest.mark.e2e — same opt-out as unit-b. |
tests/system/ or src/system_tests/load/tests/ |
extras |
|
@pytest.mark.load mocked load |
load |
|
@pytest.mark.pgvector |
pgvector-integration |
Needs the pgvector service job |
@pytest.mark.stability |
stability workflow | Not the unit-tests aggregator |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago Changed · +11 lines · +113 tokens per session b6afa4d45602
- 11d ago Changed · +2 lines · +112 tokens per session a6835b0bece8
- 2mo ago First seen · 113 lines · 1,928 tokens per session scan A d6d3fd942895
cuga-agent AGENTS.md is an instructions file published in the GitHub repository cuga-project/cuga-agent (1,107 stars, last pushed yesterday), licensed Apache-2.0. It adds 2,153 tokens to every session, about $0.0086 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
cuga-agent AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| cuga-agent AGENTS.mdcuga-project/cuga-agent | Instructions file | 1.1k | yesterday | Apache-2.0 | A | 2,153 | Codex, OpenCode |
| plan-forge database.instructions.mdsrnichols/plan-forge | Instructions file | 6 | 2d ago | MIT | A | 1,890 | GitHub Copilot |
| plan-forge naming.instructions.mdsrnichols/plan-forge | Instructions file | 6 | 2d ago | MIT | A | 1,453 | GitHub Copilot |
| plan-forge caching.instructions.mdsrnichols/plan-forge | Instructions file | 6 | 2d ago | MIT | A | 733 | GitHub Copilot |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |