Manage Feature Flags

SkillDev tools

Manage Harness Feature Flags (FME / Split.io) via MCP. List flags by workspace, get flag details, create flags, kill or restore flags per environment, archive or unarchive flags, and delete flags. Use when asked to create a feature flag, kill/restore a flag, list flags, check flag status, enable or disable a feature, or manage feature rollouts. Trigger phrases: feature flag, kill switch, restore flag, create flag, feature rollout, archive flag, FME flag.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Manage Feature Flags skill

What this skill tells your AI

The instructions your AI receives, as published by harness/harness-skills in skills/manage-feature-flags/SKILL.md and read by ahel’s review.

Create, list, kill/restore, and delete Harness FME (Split.io-backed) Feature Flags via MCP.

Prerequisites

FME flags are workspace-scoped (not project-scoped). You must discover the workspace_id and environment_id before most operations.

Step 0a: List workspaces

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_workspace"

Step 0b: List environments (per workspace)

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_environment"
  workspace_id: "<workspace_id>"

Instructions

Step 1: List Existing Flags

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"

Filter by name, tags, or rollout status:

Call MCP tool: harness_list
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  name: "dark_mode"
  tags: "ui"
  rollout_status_id: "<uuid>"   # discover via fme_rollout_status

Step 2: Get Flag Details

Call MCP tool: harness_get
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

For per-environment targeting/state, use fme_feature_flag_definition and pass environment_id.

Step 3: Create a Flag

Call MCP tool: harness_create
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  traffic_type_id: "<traffic_type_id>"   # required by FME
  body:
    name: "dark_mode"
    description: "Enable dark mode UI theme"
    tags: ["ui", "rollout"]

Step 4: Kill or Restore a Flag (per environment)

Kill (turn the flag OFF in one environment):

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "kill"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  environment_id: "<environment_id>"

Restore (re-enable after a kill):

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "restore"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  environment_id: "<environment_id>"

Step 5: Archive / Unarchive a Flag

Call MCP tool: harness_execute
Parameters:
  resource_type: "fme_feature_flag"
  action: "archive"      # or "unarchive"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

Archiving is subject to OPA policy checks (returns 409 on violation). Unarchive returns 409 if dependent objects exist.

Step 6: Update Flag Metadata

Call MCP tool: harness_update
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"
  body:
    description: "Updated description"
    tags: ["ui", "ga"]

Step 7: Delete a Flag

Call MCP tool: harness_delete
Parameters:
  resource_type: "fme_feature_flag"
  workspace_id: "<workspace_id>"
  feature_flag_name: "<flag_name>"

FME Resource Types Reference

Resource TypeOperationsDescription
fme_workspacelistList FME workspaces
fme_environmentlistList FME environments (per workspace)
fme_feature_flaglist, get, create, update, delete, execute(kill/restore/archive/unarchive)Flag metadata at workspace scope
fme_feature_flag_definitionlist, getPer-environment rollout targeting and state
fme_rollout_statuslistDiscover valid rollout_status_id values
fme_rule_based_segmentlist, getRule-based segments
fme_rule_based_segment_definitionlist, get, execute(enable/disable/change_request)Segment definition per environment

Examples

  • "Create a feature flag for dark mode" — Create fme_feature_flag with body: { name: "dark_mode", ... }
  • "Kill the experimental-search flag in production" — Execute kill with production environment_id
  • "Restore the new-checkout flag in staging" — Execute restore with staging environment_id
  • "List all feature flags in my workspace" — List fme_feature_flag for workspace
  • "Archive the stale beta_banner flag" — Execute archive

Performance Notes

  • Always discover workspace_id and environment_id before kill/restore — wrong environment can affect production.
  • List existing flags before creating to avoid duplicates.
  • FME does not expose a single "toggle" action — use kill (off) and restore (on) per environment.

Troubleshooting

Flag won't kill/restore

  • environment_id is required — kills are per-environment
  • Confirm feature_flag_name is exact (case-sensitive)
  • Verify the flag lives in the specified workspace_id

Flag Not Found

  • FME flags are workspace-scoped — confirm the correct workspace_id
  • Use harness_list with resource_type: "fme_feature_flag" and no filters to see all flags in the workspace

Archive fails with 409

  • An OPA policy may block archival — review governance policies
  • For unarchive, remove dependent segments/targeting before retrying

Signals

GitHub stars
106
Forks
18
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
manage-feature-flags
Source
github.com/harness/harness-skills