Skip to content
Back to skills

T3code

ASecurity

`t3code` (https://github.com/pingdotgg/t3code) is a minimal GUI for coding agents (Codex, Claude, Cursor, OpenCode, Grok) that **delegates 100% of LLM auth to vendor CLIs** and never stores API keys. Its control plane (pairing + DPoP bearer) secures its own server.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsrustgosqlgitapisecurity

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add nuroctane/nur-cli --skill t3code --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of T3code?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for T3code
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nuroctane-t3code/badge)](https://www.skillsdirectory.com/skills/nuroctane-t3code)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# t3code Integration

## Overview
`t3code` (https://github.com/pingdotgg/t3code) is a minimal GUI for coding agents (Codex, Claude, Cursor, OpenCode, Grok) that **delegates 100% of LLM auth to vendor CLIs** and never stores API keys. Its control plane (pairing + DPoP bearer) secures its own server.

NurCLI traditionally stores tokens in `~/.nur/auth.json` and implements custom OAuth flows. t3code's model offers security and ergonomic wins we should adopt.

## Auth Architecture (t3code)
- **Driver layer — BYO-auth**: `ClaudeDriver`, `CodexDriver`, `CursorDriver`, `OpenCodeDriver`, `GrokDriver` each have `configSchema`, `defaultConfig()`, `create(): Effect<ProviderInstance>`, `supportsMultipleInstances`. Probes credentials by reading vendor config dir (e.g. `CLAUDE_CONFIG_DIR` not `$HOME` to preserve macOS keychain) and binary presence. No token exchange.
- **Control plane**: `t3 auth pairing create/list/revoke`, `session issue/list/revoke`. Contracts: `ServerAuthPolicy` = `desktop-managed-local | loopback-browser | remote-reachable | unsafe-no-auth`, Bootstrap `desktop-bootstrap` vs `one-time-token`, scopes `AuthAdministrativeScopes` vs `Standard`.
- **DPoP** (RFC 9449): `verifyRequestDpopProof()` validates DPoP header, method+URL, thumbprint, anti-replay via `SHA-256(thumbprint:jti)` stored in SQLite.
- **Persistence**: SQLite via `effect/unstable/http`, atomic writes via `atomicWrite.ts`.

## What nur-cli can improve (from t3code)
1. **Import-first**: Probe vendor CLI auth files before prompting. Already have `import_existing_session` for openai/xai/kimi/anthropic/hf, but missing Cursor/OpenCode. Should default on `auth status` and hint `codex login` etc. if missing.
2. **Env isolation**: Per-instance env merging (`CLAUDE_CONFIG_DIR`, `CODEX_HOME`) — prevents breaking host keychain. Nur currently has global env. Add local `.nur/env` or per-provider env override UI.
3. **Pairing flow for remote**: One-time pairing link `/pair#token=...` elegant for headless/SSH. Reuse for `nur serve` — issue one-time link for remote TUI.
4. **DPoP**: If nur adds server mode, copy anti-replay (store jti hash).
5. **Scope separation**: Administrative vs standard scopes — split `auth.json` tokens into read/write scopes.
6. **No-secret-storage / delegate mode**: Offer `nur login --delegate` that verifies vendor CLI auth exists without storing token — reduces surface.
7. **Atomic writes**: Use atomic write for `auth.json` (t3code does) to avoid corruption on crash.
8. **Driver registry pattern**: Refactor `providers.rs` + `oauth/flows.rs` into driver registry — each driver has `displayName`, `supportsMultipleInstances`, `configSchema`, `checkStatus()`.

## Full Integration Plan
- **Phase 1 (this commit)**: Add `src/t3code.rs` compat module that mirrors t3code's driver probing with env isolation, adds Cursor/OpenCode import, atomic write wrapper, delegate probe, and pairing token generator (simplified, no DPoP yet). Wire into `auth.rs` and `oauth/flows.rs`.
- **Phase 2**: Implement `ProviderDriver` trait in Rust, refactor providers into drivers, add `nur t3code` subcommand to launch/check t3code server status, and add `t3code` tool (`t3code: action=status|probe|pairing_create`) similar to `akarso`/`graphjin`.
- **Phase 3**: Full pairing + DPoP for `nur serve` remote, SQLite session store, and scope separation.

## Usage
- `/t3code` or `use t3code skill` triggers this playbook.
- `nur auth status` now shows vendor CLI probe results (green if `claude auth login` etc. present).
- `nur login --delegate` verifies without storing.
- Future: `nur t3code probe` lists all drivers and their auth status.

## References
- https://github.com/pingdotgg/t3code
- `apps/server/src/provider/Drivers/*`, `provider/ProviderDriver.ts`, `auth/dpop.ts`, `cli/auth.ts`, `packages/contracts/src/auth.ts`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…