Skip to content

Remove the issue_intents runtime feature gate #45254

Description

@alondahari

Problem

Issue intent metadata for issue types, issue fields, and labels is currently gated on the issue_intents entry in GH_AW_RUNTIME_FEATURES. With the feature moving to public preview, workflows should no longer need that client-side environment-variable opt-in.

The server-side feature flag remains authoritative. Sending the intent-capable payload before that flag is fully enabled is safe: the metadata is ignored rather than producing an error.

Current implementation

The gate was introduced in #41092 and is implemented by hasIssueIntentsRuntimeFeature() in actions/setup/js/issue_intents.cjs. It currently controls:

  • the intent guidance added to set_issue_type, set_issue_field, and add_labels tool descriptions in actions/setup/js/generate_safe_outputs_tools.cjs
  • structured issue type updates and the GraphQL-Features: update_issue_suggestions header in actions/setup/js/set_issue_type.cjs
  • issue field intent metadata and the feature header in actions/setup/js/set_issue_field.cjs
  • structured label metadata sent by actions/setup/js/add_labels.cjs
  • the GraphQL label intent path used by actions/setup/js/update_issue.cjs

Desired behavior

Remove the client-side issue_intents runtime feature check so intent-capable behavior is always used when these safe outputs run:

  • Always include the intent guidance for set_issue_type, set_issue_field, and add_labels tools.
  • For non-clear set_issue_type operations, always use the structured issue type input and feature header. Preserve the existing clear behavior.
  • Always attach normalized rationale, confidence, and suggest metadata to issue field updates and send the feature header.
  • Always preserve structured label metadata in add_labels requests.
  • When update_issue includes labels, always use the existing GraphQL label intent path and feature header.
  • Remove hasIssueIntentsRuntimeFeature() and its issue_intents constant/imports once no callers remain.
  • Do not remove or otherwise change the generic GH_AW_RUNTIME_FEATURES infrastructure; other runtime features may still depend on it.

Compatibility requirements

  • Existing string-only label payloads continue to work.
  • Calls that omit rationale, confidence, and suggest continue to work without errors.
  • Clearing an issue type continues to work.
  • Existing sanitization, the 280-character rationale limit, confidence normalization, validation, allowed-list checks, and staged-mode behavior remain unchanged.
  • Repositories or deployments where the server-side feature flag is not yet enabled do not fail; unsupported intent metadata is ignored.

Acceptance criteria

  • GH_AW_RUNTIME_FEATURES no longer changes issue-intent tool descriptions or runtime mutation behavior.
  • Tests no longer set GH_AW_RUNTIME_FEATURES=issue_intents to exercise issue intent behavior.
  • Tests cover unconditional intent guidance and mutation paths with the environment variable absent.
  • Tests cover string labels and payloads without optional intent metadata.
  • No issue_intents runtime feature checks remain in the issue type, issue field, add-labels, update-issue, or tool-generation paths.

Metadata

Metadata

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions