Skip to content

spec+lint: flow http headers / connector input / url describes route credentials to credentialRef, and one exported predicate draws an author-time advisory on a credential-shaped literal (the spec half of #20590) #20654

Description

@objectstack-fleet

This card carries the packages/spec + packages/lint half of #20590. #20590 keeps the domain:services face: the http descriptor's configSchema text and the showcase teaching site. Filing gate: ④ a coordination node, a per-layer child in the #20618 pattern.

Why this is owed

Triage's direction on #20590 (5891721503) is A, taken whole. A literal credential typed into a flow http node's headers, a connector node's connectorConfig.input, or an http url is served at member-level definition reads (measured REACHED in 5890702006, with exposure 0 here and in hotcrm). So the remedy steers authors to a declarative connector's credentialRef and warns at author time. ⛔ Nothing is withheld. Clause-②: no for the guidance faces.

The deliverable (triage's text, points 1 and 2)

  • The describes. HttpConfigSchema.headers and connectorConfig.input in packages/spec say that a flow definition is served to every member who can read flows, and they route an outbound credential to a declarative connector's credentialRef.
  • One predicate, one home. The measured R1/R2 rule becomes one exported predicate in packages/lint. The rule is in the scanner header of scan-open-map-credentials.mjs, on branch claude/issue-20590-open-map-credentials at 13b764d0a. It covers a credential-shaped literal in headers, in a connector input (walked recursively), and a credential-named query key in an http url.
    • It draws one advisory that names the connector route.
    • The save door carries lint's advisories (evaluateRuntimeAuthoringGate, where flow-try-catch-without-catch already surfaces), and so do os validate and os lint.
    • ⛔ There is no second copy of the name list.
  • Severity: advisory / warning only, ⛔ never a refusal or an error. Triage ruled the finding a product advisory for authors, not a new repo gate. If it ever becomes a refusal, it goes back to triage first.
  • A template value ({var}) is not a literal. The scanner's positive-control fixture is the natural pin set.

Dedupe

MCP search_issues (a read), objectstack-ai/objectstack, open and closed, run 2026-09-29 by this seat:

Dedupe words: http headers credential advisory · connector input literal credential lint · credentialRef steer describe

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:specpriority:p1High: required for production / M2security

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions