Atlas / Skills / yaoapp / yao

yaoBLOCK

skills/yaoapp/yao

✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.

Verdict
BLOCK
Grade
F
Trust score
45 /100
Version
—
Hosts
1 documented
License
NOASSERTION
Stars
8,142
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.

🏠 Homepage: https://yaoagents.com

📚 Docs: https://yaoagents.com/docs

🖥️ Yao Desktop: https://yaoagents.com/download

📱 Android (Beta): https://yaoagents.com/download/yaoagents

⚡⚡⚡ DeepSeek Harness is now integrated — use it directly in the desktop app, Android, or browser, running across your devices. Learn more →

🧠 Jev is TypeSafe AI's System One model: it doesn't write text, it returns typed decisions with confidence. Now available in Yao Agents. Learn more →

中文

How it works

Agents run on your own devices. Every machine you add is another place for them to work, all managed from one place.

Workspaces

Every workspace is isolated. Work stays separate, managed across all your computers, and accumulates into documents that become your knowledge base.

While working, agents can read what they need from any node.

Task Board

Say what you need in a conversation, and it becomes a task on your board.

Keep the conversation going, keep it running, and it improves with use, growing into an agent purpose-built for this kind of work.

Connect task agents to your apps, or share them with others.

Open API

Expert and task agents integrate into your own apps and workflows. They're built on standard APIs, with both SSE and WebSocket support.

Let your agents become part of your busines

Read from source at commit f29cb2f7d38cOBSERVED · 2026-10-19
Advertisement
02

Install

Commands as the repository documents them. They are shown, not run.

git clone "https://${TOKEN}@github.com/org/repo.git"
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
cursormentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

# Secret Management

Agents can read user-configured secrets at runtime using the `tai tool` CLI.
Secrets are encrypted at rest (AES-256-GCM) and decrypted only when read.

## Available Tools

| Tool | Description |
|------|-------------|
| `secret_list` | List secret names and descriptions (no values) |
| `secret_read` | Read a single secret value by name |

## Usage

### Bash

```bash
# List available secrets
tai tool secret_list

# Read a secret
TOKEN=$(tai tool secret_read '{"name": "GITHUB_TOKEN"}' | jq -r '.value')
git clone "https://${TOKEN}@github.com/org/repo.git"
```

### Node.js

```javascript
const { execSync } = require("child_process");

function readSecret(name) {
  const raw = execSync(
    `tai tool secret_read '${JSON.stringify({ name })}'`,
    { encoding: "utf-8" }
  );
  return JSON.parse(raw).value;
}

const token = readSecret("GITHUB_TOKEN");
```

### Python

```python
import json
import subprocess

def read_secret(name: str) -> str:
    result = subprocess.run(
        ["tai", "tool", "secret_read", json.dumps({"name": name})],
        capture_output=True, text=True, check=True,
    )
    return json.loads(result.stdout)["value"]

token = read_secret("GITHUB_TOKEN")
```

### PowerShell

```powershell
function Read-Secret {
    param([string]$Name)
    $json = @{ name = $Name } | ConvertTo-Json -Compress
    $result = tai tool secret_read $json | ConvertFrom-Json
    return $result.value
}

$token = Read-Secret -Name "GITHUB_TOKEN"
```

## Security Rules

1. **Never print or log secret values** — Do not write secrets to stdout, stderr, or any log file.
2. **Never write secrets to files** — Exception: SSH keys may be written to `~/.ssh/` with `chmod 600` permissions.
3. **Never send secrets to the LLM** — Secret values must not appear in prompt content, system messages, or tool call results that are forwarded to the model.
4. **Scope isolation** — Secrets are scoped per user per agent. An agent can only access secrets configured for it.
5. **Audit trail** — Every `secret_read` call is logged in the audit trail with the caller's identity.
05

Trust audit

BLOCKgrade F · trust 45/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (1 observation(s))
Shell
declared (3 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
crypto/crypto.go:191
if !strings.HasPrefix(privateKeyStr, "-----BEGIN RSA PRIVATE KEY-----") {
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
crypto/crypto.go:192
privateKeyStr = fmt.Sprintf("-----BEGIN RSA PRIVATE KEY-----\n%s\n-----END RSA PRIVATE KEY-----\n", privateKeyStr)
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
unit-test/agent/app/openapi/certs/grpc-key.pem:1
-----BEGIN PRIVATE KEY-----
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
unit-test/agent/app/openapi/certs/mtls-client-ca-key-TESTING-ONLY-DO-NOT-USE-IN-PRODUCTION.pem:1
-----BEGIN PRIVATE KEY-----
CRITICALHard-coded secrets · secret.private_key · CWE-798, CWE-321
unit-test/agent/app/openapi/certs/signing-key.pem:1
-----BEGIN PRIVATE KEY-----
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
agent/sandbox/v2/prepare.go:186
label = "exec(background)"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
helper/condition.go:85
func (cond Condition) Exec() bool {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
sandbox/v2/box.go:118
func (b *Box) Exec(ctx context.Context, cmd []string, opts ...ExecOption) (*ExecResult, error) {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
tools/skills/yao-secret/SKILL.md:3
description: Secret management expert. ALWAYS invoke this skill when you need to read API keys, tokens, or other secrets configured by the user. Never hardcode credentials — use this skill to retrieve
Why it matters. asks the agent to read credentials
MEDIUMInventory / provenance · inv.binary · CWE-1104
integrations/testdata/test.docx
test.docx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
integrations/testdata/test.ogg
test.ogg
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
yao/data/icons/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
cmd/ci-token/main.go:83
fmt.Print(token)
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
unit-test/agent/app/scripts/setup.ts:29
console.log(`  Password: ${ROOT_USER_PASSWORD}`);
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
agent/llm/providers/anthropic/anthropic_supplement_test.go:130
"key": "sk-ant-invalid-key-should-fail"
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/pr-test.yml:333
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/pr-test.yml:586
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/unit-test.yml:305
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/unit-test.yml:508
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
unit-test/agent/README.md:85
YAO_DB_PRIMARY=postgres://yao:[email protected]:5432/agent_test?sslmode=disable
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
integrations/telegram/webhook_e2e_test.go:33
const secret = "e2e-webhook-test-secret"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
llmprovider/registry_test.go:236
APIKey: "sk-real-secret-key-12345",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
utils/README.md:562
//   token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
LOWInventory / provenance · inv.binary · CWE-1104
unit-test/agent/app/assistants/tests/attachment-handler/testdata/docx.docx
docx.docx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
unit-test/agent/app/assistants/tests/attachment-handler/testdata/pptx.pptx
pptx.pptx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-19 · audit v0.4.1 · source sha f29cb2f7d38cfull audit observations/trust-audit/skill/yaoapp__yao.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-19f29cb2f7d38cBLOCKF45first audit
07

Questions

What does the yao skill do?

✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.

Is yao safe to install?

No — not without reading the findings first. The audit graded it F (45/100) and found 9 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What can yao access on my machine?

The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: found — see the findings.

Which assistants does yao work with?

Its documentation mentions cursor. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (f29cb2f7d38c), read on 2026-10-19. The repository is watched, and a new audit runs when it changes — this is the first audit.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: yao](https://modelsatlas.com/skills/yaoapp/yao/badge.svg)](https://modelsatlas.com/skills/yaoapp/yao/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement