inspector/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall ed83bfba3b docs: reconcile store isolation with --stored-auth-only in the §8 script
Copilot round 4. The complete script created an empty isolated OAuth
store and then always passed --stored-auth-only, so against an
OAuth-protected server it could never authenticate — exit 3 by
construction — while being presented as the general "arbitrary MCP
server" template.

The two requirements are genuinely in tension: §6 wants isolation so a
run cannot read or rotate real tokens, and --stored-auth-only wants a
token to reuse. Round 2 made the isolation airtight without reconciling
that, which is what turned a latent gap into a guaranteed one.

Resolved by making credential provisioning explicit rather than by
scoping the script down to unauthenticated servers: it now takes a
bearer token from the CI secret store when MCP_TOKEN is set — the
approach §6 already recommends for unattended runs — and is unchanged
when it is not. Added a callout naming the tension, wired MCP_TOKEN
through the Actions job, and noted that a grant requiring genuine
interactive OAuth does not belong in a CI smoke test at all.

The conditional argument uses "${auth[@]+"${auth[@]}"}" because an empty
array is an unbound variable under `set -u` in bash before 4.4, and
macOS still ships 3.2 (verified locally). Documented why, so it is not
simplified into ${MCP_TOKEN:+--header "..."} — that form happens to
preserve its inner quoting in bash, but as a shell-specific subtlety a
reader cannot check rather than something the script states.

Verified against a live HTTP test server both ways: MCP_TOKEN unset and
MCP_TOKEN set to a value containing a space both pass all three
assertions. Argv construction checked directly — the header arrives as
one word with the token intact, and no empty argument is passed when the
variable is unset.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KsKC3HniVF9dCZtDVbYp5B
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-09-06 14:14:51 -04:00
..
images docs: restore the missing docs/ targets and split the catalog-seeding wording (#1811) (#1812) 2026-07-27 20:37:14 -04:00
architecture.md Merge branch 'v2/main' into v2/chore/2163-agent-skills 2026-08-29 23:06:01 -04:00
cli-smoke-testing.md docs: reconcile store isolation with --stored-auth-only in the §8 script 2026-09-06 14:14:51 -04:00
docker.md chore: extract AGENTS.md recipes into agent skills 2026-08-29 00:36:37 -04:00
inspector-roadmap-2026-h2.md chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
launcher-config-consolidation-plan.md docs: restore the missing docs/ targets and split the catalog-seeding wording (#1811) (#1812) 2026-07-27 20:37:14 -04:00
mcp-app-review.md fix(web): move the app origin off 6276, bound the publish route 2026-08-24 08:45:40 -04:00
mcp-server-configuration.md fix(auth): refuse a grant whose authorization server cannot be established (#2144) 2026-08-28 06:18:58 -04:00
publishing.md chore: extract AGENTS.md recipes into agent skills 2026-08-29 00:36:37 -04:00
quality-gate.md chore: address Copilot review round 2 (#2226) 2026-09-05 16:27:46 -04:00
skill-authoring.md Review round 8: using a fixture, not connecting, is the trigger 2026-09-05 18:03:37 -04:00
test-servers.md fix: address Copilot review round 6 on #2251 2026-09-04 23:21:51 -04:00
v1-to-v2-migration.md fix(web): bound retained app documents by size; correct the cookie claim 2026-08-24 08:45:40 -04:00