Manage Feature Flags
SkillDev toolsManage 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.
No other account needed.
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 Type | Operations | Description |
|---|---|---|
fme_workspace | list | List FME workspaces |
fme_environment | list | List FME environments (per workspace) |
fme_feature_flag | list, get, create, update, delete, execute(kill/restore/archive/unarchive) | Flag metadata at workspace scope |
fme_feature_flag_definition | list, get | Per-environment rollout targeting and state |
fme_rollout_status | list | Discover valid rollout_status_id values |
fme_rule_based_segment | list, get | Rule-based segments |
fme_rule_based_segment_definition | list, get, execute(enable/disable/change_request) | Segment definition per environment |
Examples
- "Create a feature flag for dark mode" — Create
fme_feature_flagwithbody: { name: "dark_mode", ... } - "Kill the experimental-search flag in production" — Execute
killwith productionenvironment_id - "Restore the new-checkout flag in staging" — Execute
restorewith stagingenvironment_id - "List all feature flags in my workspace" — List
fme_feature_flagfor workspace - "Archive the stale beta_banner flag" — Execute
archive
Performance Notes
- Always discover
workspace_idandenvironment_idbefore 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) andrestore(on) per environment.
Troubleshooting
Flag won't kill/restore
environment_idis required — kills are per-environment- Confirm
feature_flag_nameis 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_listwithresource_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