Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
"TRUSTED-LOCAL WARNING: this workspace defaults to bypassPermissions for the operator's solo workflow.",
"Use .claude/settings.team-safe.example.json for shared, reviewed, client-visible, or less trusted work.",
"Do not put Anthropic, Claude subscription, MiniMax, or other provider credentials in this file.",
"Use ignored local profiles for planner/executor identity."
"Use ignored local profiles for planner/executor identity.",
"Remote Control compatible: do not set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, DISABLE_TELEMETRY, disableRemoteControl, or provider auth variables in shared project settings."
],
"env": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_AUTO_COMPACT": "0",
"CLAUDE_CODE_NO_FLICKER": "1"
},
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.minimax-executor.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
"MINIMAX_API_KEY": "YOUR_MINIMAX_API_KEY",
"MINIMAX_API_HOST": "https://api.minimax.io",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"ANTHROPIC_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2.7-highspeed",
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.opusminimax-planner.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
"Copy to .claude/settings.opusminimax-planner.local.json for local tweaks, but keep credentials outside committed files."
],
"env": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-7",
"CLAUDE_CODE_EFFORT_LEVEL": "xhigh",
"CLAUDE_CODE_SUBAGENT_MODEL": "sonnet",
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.opussonnet.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-6",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-sonnet-4-6",
"CLAUDE_CODE_EFFORT_LEVEL": "xhigh",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_AUTO_COMPACT": "0",
"CLAUDE_CODE_NO_FLICKER": "1"
},
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.solo-fast.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
"MINIMAX_API_KEY": "YOUR_MINIMAX_API_KEY",
"MINIMAX_API_HOST": "https://api.minimax.io",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"ANTHROPIC_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2.7-highspeed",
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.sonnet-executor.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "haiku",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-sonnet-4-6",
"CLAUDE_CODE_EFFORT_LEVEL": "high",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_AUTO_COMPACT": "0",
"CLAUDE_CODE_NO_FLICKER": "1"
},
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.team-safe.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
"MINIMAX_API_KEY": "YOUR_MINIMAX_API_KEY",
"MINIMAX_API_HOST": "https://api.minimax.io",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1",
"DISABLE_FEEDBACK_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"ANTHROPIC_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2.7-highspeed",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2.7-highspeed",
Expand Down
127 changes: 127 additions & 0 deletions .claude/skills/remote-control/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
name: remote-control
description: Use Claude Code native Remote Control (/remote-control, /rc, claude --remote-control, claude remote-control) safely inside the minmaxing harness without custom network control planes, API-key auth, or static runtime overclaims.
argument-hint: [name/status/troubleshoot]
disable-model-invocation: true
---

# /remote-control

Use Claude Code's native Remote Control. This route exists to keep the harness
compatible with the official Claude Code and Claude Code CLI feature, not to
build a separate remote-control server.

## Native Commands

Claude Code exposes the same native Remote Control surface in three useful
modes:

- Existing interactive session: `/remote-control` or `/rc`
- Interactive CLI launch with RC enabled: `claude --remote-control` or `claude --rc`
- CLI server mode waiting for browser/mobile connections: `claude remote-control`

The remote surface is `claude.ai/code` or the Claude mobile app. The Claude Code
process keeps running locally on this machine, with the same filesystem, tools,
MCP servers, project settings, hooks, and permissions as the local session.

## Native-Only Boundary

Do not implement a custom remote server, websocket bridge, HTTP tunnel, or MCP control plane.
Do not add a browser automation backdoor for this route. Native Remote Control
uses outbound HTTPS through Anthropic and does not require inbound ports from
this harness.

Do not confuse this with `claude --remote` or Claude Code on the web. Remote
Control drives a local Claude Code process from another device; cloud sessions
run elsewhere and do not automatically inherit this local harness environment.

## Prerequisites

- Claude Code must be current enough for Remote Control.
- Authentication must be a claude.ai subscription login from `claude auth login`
or `/login`.
- API-key and inference-only token auth do not satisfy Remote Control:
`ANTHROPIC_API_KEY`, Console/API-key auth, `claude setup-token`, and
`CLAUDE_CODE_OAUTH_TOKEN` are blockers for this feature.
- Shared project settings must not set `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`,
`DISABLE_TELEMETRY`, `CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`,
`CLAUDE_CODE_USE_FOUNDRY`, or `disableRemoteControl`.
- Team and Enterprise organizations may require an admin-side Remote Control
toggle before the feature is eligible.
- Run `claude` in the project at least once and accept workspace trust before
expecting a remote session to attach cleanly.

## Checks

Run the static doctor before blaming the harness:

```bash
bash scripts/remote-control-doctor.sh --static --json
```

Run the no-secret contract gate before release:

```bash
bash scripts/remote-control-smoke.sh --fixtures
```

These checks never start a live Remote Control session and must not claim
runtime proof. They only verify that committed project settings, docs, scripts,
fixtures, and eval metadata do not block or misrepresent native RC.

## Runtime Use

From inside an existing Claude Code session:

```text
/remote-control
/rc
```

From a shell in the project root:

```bash
claude --remote-control
claude remote-control
```

Use `claude --version` and `/status` locally when troubleshooting account,
organization, or auth state. If Claude reports API-key, Console, third-party
provider, inference-only token, stale organization, or disabled-policy status,
fix that auth state first.

## Security Notes

This workspace defaults to trusted-local `bypassPermissions` for the operator's
solo workflow. Remote Control exposes that same local session authority from
web/mobile, so treat an active RC session like sitting at the terminal.

Keep the committed deny rules for:

- `Read(./.env)`
- `Read(./.env.*)`
- `Read(./.claude/settings.local.json)`
- `Read(./.claude/*.local.json)`
- `Read(./secrets/**)`

Never paste Remote Control URLs, QR tokens, credentials, `.env` contents, or
local profile secrets into artifacts, logs, PRs, or chats. Static harness evidence is compatibility evidence, not proof that a live browser or mobile session connected.

## Troubleshooting

- `Remote Control requires a claude.ai subscription`: log in with
`claude auth login` and choose the claude.ai path; unset `ANTHROPIC_API_KEY`
for the session.
- `Remote Control requires a full-scope login token`: do not use
`CLAUDE_CODE_OAUTH_TOKEN` or `claude setup-token`; refresh with full
claude.ai login.
- `Remote Control is not yet enabled for your account`: unset
`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`,
`CLAUDE_CODE_USE_BEDROCK`, `CLAUDE_CODE_USE_VERTEX`, and
`CLAUDE_CODE_USE_FOUNDRY`, then log out and back in if needed.
- `Remote Control is disabled by your organization's policy`: check `/status`
and the Team/Enterprise admin toggle. A managed `disableRemoteControl`
setting is a policy decision, not a harness bug.
- `Remote credentials fetch failed`: rerun with `claude remote-control --verbose`
after confirming claude.ai login, active subscription, and outbound HTTPS
access to Anthropic on port 443.
3 changes: 2 additions & 1 deletion .claude/skills/workflow/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ Choose the route from user intent:
| deepretaste, retaste, detect intent, bootstrap taste and ICP, SOTA customer research for taste | route through `/opusworkflow` with `inner_contract=deepretaste` when files may change; preserve `/deepresearch` as the general research route when findings will not mutate taste |
| define ICP, ideal customer profile, tailor taste to customer, update taste.md or taste.vision from ICP | route through `/opusworkflow` with `inner_contract=defineicp` when files may change; keep proposal-first unless explicit apply approval is present |
| Claude product, Claude Code, Claude.ai, Anthropic API, connectors, plugins, skills, hooks, MCP, subagents, plan availability, limits, setup | route product facts through `/claudeproduct` before generic research; continue into `/workflow` only if files change |
| remote control, rc, continue Claude Code from phone, claude.ai/code local session | route to `/remote-control`; use native Claude Code RC commands only (`/remote-control`, `/rc`, `claude --remote-control`, `claude remote-control`) and never build a custom control server |
| parallel, mode parallel, dense workflow, orchestrate subagents, split across instances | route through `/opusworkflow` with `inner_contract=parallel` for file-changing packet execution; run the `/parallel` eligibility audit and use packets only when capacity, ownership, and verification pass |
| hive, hive mind, coordinated agents, swarm, multi-agent synthesis | route through `/opusworkflow` with `inner_contract=hiveworkflow` for file-changing hive work only when roles, blackboard, dissent, ownership, capacity, and verification pass; otherwise downgrade to `/workflow` or `/parallel` fallback |
| explain | inspect and explain directly |
Expand Down Expand Up @@ -712,7 +713,7 @@ bash scripts/spec-archive.sh closeout "$ARGUMENTS" "shipped: [short outcome]" 2>

## Specialist Skills

The project still provides specialist commands like `/autoplan`, `/digestflow`, `/deepretaste`, `/defineicp`, `/claudeproduct`, `/deepresearch`, `/webresearch`, `/browse`, `/introspect`, `/parallel`, `/hive`, `/hiveworkflow`, `/sprint`, `/verify`, `/audit`, `/visualize`, `/visualizeworkflow`, and `/ship`.
The project still provides specialist commands like `/autoplan`, `/digestflow`, `/deepretaste`, `/defineicp`, `/claudeproduct`, `/remote-control`, `/deepresearch`, `/webresearch`, `/browse`, `/introspect`, `/parallel`, `/hive`, `/hiveworkflow`, `/sprint`, `/verify`, `/audit`, `/visualize`, `/visualizeworkflow`, and `/ship`.

Use them like this:
- as direct user-invoked helpers
Expand Down
35 changes: 35 additions & 0 deletions .taste/fixtures/remote-control/green/valid-native-static.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"api_key_auth_allowed": false,
"artifact_type": "remote-control-readiness",
"auth": {
"api_keys_supported": false,
"oauth_login_required": true,
"requires_claude_ai_subscription": true
},
"checks": [
{
"id": "shared-env-blockers",
"status": "pass",
"summary": "Shared project settings do not set known Remote Control blocker or provider auth variables"
}
],
"commands": [
"/remote-control",
"/rc",
"claude --remote-control",
"claude remote-control"
],
"custom_network_control_plane": false,
"mode": "ci-static",
"native_claude_code_remote_control": true,
"operator_stop_required": true,
"runtime_proof_status": "not_run_static_only",
"runtime_remote_control_started": false,
"secrets": {
"read_secret_files": false,
"secret_values_redacted": true,
"tokens_in_url": false
},
"shared_project_env_blockers": [],
"status": "pass"
}
28 changes: 28 additions & 0 deletions .taste/fixtures/remote-control/red/api-key-auth-allowed.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"api_key_auth_allowed": true,
"artifact_type": "remote-control-readiness",
"auth": {
"api_keys_supported": true,
"oauth_login_required": false,
"requires_claude_ai_subscription": false
},
"commands": [
"/remote-control",
"/rc",
"claude --remote-control",
"claude remote-control"
],
"custom_network_control_plane": false,
"mode": "ci-static",
"native_claude_code_remote_control": true,
"operator_stop_required": true,
"runtime_proof_status": "not_run_static_only",
"runtime_remote_control_started": false,
"secrets": {
"read_secret_files": false,
"secret_values_redacted": true,
"tokens_in_url": false
},
"shared_project_env_blockers": [],
"status": "fail"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"api_key_auth_allowed": false,
"artifact_type": "remote-control-readiness",
"auth": {
"api_keys_supported": false,
"oauth_login_required": true,
"requires_claude_ai_subscription": true
},
"commands": [
"/remote-control",
"/rc",
"claude --remote-control",
"claude remote-control"
],
"custom_network_control_plane": true,
"mode": "ci-static",
"native_claude_code_remote_control": true,
"operator_stop_required": true,
"runtime_proof_status": "not_run_static_only",
"runtime_remote_control_started": false,
"secrets": {
"read_secret_files": false,
"secret_values_redacted": true,
"tokens_in_url": false
},
"shared_project_env_blockers": [],
"status": "fail"
}
30 changes: 30 additions & 0 deletions .taste/fixtures/remote-control/red/shared-blocker-env.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"api_key_auth_allowed": false,
"artifact_type": "remote-control-readiness",
"auth": {
"api_keys_supported": false,
"oauth_login_required": true,
"requires_claude_ai_subscription": true
},
"commands": [
"/remote-control",
"/rc",
"claude --remote-control",
"claude remote-control"
],
"custom_network_control_plane": false,
"mode": "ci-static",
"native_claude_code_remote_control": true,
"operator_stop_required": true,
"runtime_proof_status": "not_run_static_only",
"runtime_remote_control_started": false,
"secrets": {
"read_secret_files": false,
"secret_values_redacted": true,
"tokens_in_url": false
},
"shared_project_env_blockers": [
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC"
],
"status": "fail"
}
28 changes: 28 additions & 0 deletions .taste/fixtures/remote-control/red/static-runtime-proof-claim.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"api_key_auth_allowed": false,
"artifact_type": "remote-control-readiness",
"auth": {
"api_keys_supported": false,
"oauth_login_required": true,
"requires_claude_ai_subscription": true
},
"commands": [
"/remote-control",
"/rc",
"claude --remote-control",
"claude remote-control"
],
"custom_network_control_plane": false,
"mode": "ci-static",
"native_claude_code_remote_control": true,
"operator_stop_required": true,
"runtime_proof_status": "confirmed",
"runtime_remote_control_started": false,
"secrets": {
"read_secret_files": false,
"secret_values_redacted": true,
"tokens_in_url": false
},
"shared_project_env_blockers": [],
"status": "fail"
}
Loading
Loading