Automattic / Automattic/studio

Redact site admin passwords from Studio list JSON

Open
#4,729 0 comments 0 reactions 1 assignee Claimed by @chubes4 View on GitHub
Enhancement
Dominant language
TypeScript
Stars
517
Forks
95
Avg merge
1d 22h
Merged PRs (30d)
162

Description

## Problem

`studio list --format=json` includes the plaintext `adminPassword` for every local site by default. A routine inventory command therefore exports all local WordPress administrator credentials into shell pipelines, agent transcripts, CI logs, caches, and diagnostic artifacts.

Fresh reproduction with 26 local sites:

```sh
studio list --format=json | node -e 'let s="";process.stdin.on("data",d=>s+=d);process.stdin.on("end",()=>{const rows=JSON.parse(s); console.log({count:rows.length,passwordCount:rows.filter(r=>r.adminPassword).length})})'
```

Result:

```text
{ count: 26, passwordCount: 26 }
```

The table output does not expose passwords, so JSON currently has a materially broader and surprising secret surface than the human view.

## Expected

Inventory is non-secret by default. Credentials require a separate explicit, auditable command or opt-in intended for one selected site.

## Acceptance criteria

- Remove `adminPassword` and any equivalent secret fields from default table and JSON list records.
- Keep site identity, path, status, runtime, version, and URL fields available for automation.
- Provide an explicit single-site credential retrieval flow if CLI consumers need it.
- Require an unmistakable opt-in for secret output and document that it must not be logged.
- Add contract coverage proving list JSON contains no credential values.
- Audit other list/status machine surfaces for the same accidental secret expansion.

## AI assistance disclosure

OpenAI gpt-5.6-sol via OpenCode inspected the live Studio CLI inventory contract, strict-parsed JSON output, counted exposed credential fields, searched existing issues, and drafted this report. Chris Huber directed the control-plane audit and remains responsible for the report.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.