agentsclimarketplace

Managing approvals

Skill pvnarp/harness-agentic-skills/skills/harness/managing-approvals

Manage Harness pipeline approval gates via MCP. List approval instances for an execution, filter by status (WAITING, APPROVED, REJECTED, FAILED, ABORTED, EXPIRED) or type (HarnessApproval, JiraApproval, CustomApproval, ServiceNowApproval), and approve or reject Harness approvals with optional comments and approver inputs. Use when asked to approve a deployment, reject a release, check who's blocking a pipeline, find pending approvals, or audit approval history. Trigger phrases: approve, reject, approval gate, waiting approval, pending approval, deployment approval, release gate, jira approval, service now approval.From its SKILL.md

Install
npx -y skills add pvnarp/harness-agentic-skills --skill managing-approvals

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.9 KB, as published. Nobody here has run it

Manage Approvals

What this skill uses

Harness MCP tools: harness:harness_execute, harness:harness_get, harness:harness_list Resource types: approval_instance, execution

Pipeline approvals are managed via the approval_instance resource type. Approvals are always scoped to a pipeline execution. The MCP supports listing approvals for an execution and approving / rejecting HarnessApproval-type instances directly. Jira / ServiceNow / Custom approvals are surfaced for visibility but are completed in their respective external systems.

Instructions

Step 1: Find the execution

If you don't have an execution_id, list executions:

Call MCP tool: harness:harness_list
Parameters:
  resource_type: "execution"
  org_id: "<org>"
  project_id: "<project>"
  filters:
    status: "Paused"        # paused executions are usually waiting on an approval

Or paste a Harness UI execution URL into any subsequent call's url parameter to auto-extract the execution_id.

Step 2: List approvals for an execution

execution_id is required on list.

Call MCP tool: harness:harness_list
Parameters:
  resource_type: "approval_instance"
  filters:
    execution_id: "<execution_id>"
    approval_status: "WAITING"          # optional - WAITING|APPROVED|REJECTED|FAILED|ABORTED|EXPIRED
    approval_type: "HarnessApproval"     # optional - HarnessApproval|JiraApproval|CustomApproval|ServiceNowApproval
    node_execution_id: "<node_id>"       # optional - filter by step

Returns approval instances with their identifiers, current status, approver groups, expiration, comments history.

Step 3: Approve a Harness approval

approval_id is the resource id. comments and approver_inputs are optional.

Call MCP tool: harness:harness_execute
Parameters:
  resource_type: "approval_instance"
  action: "approve"
  resource_id: "<approval_id>"
  body:
    comments: "Approved after security review. Deployment safe to proceed."
    approver_inputs:
      - name: change_ticket
        value: CHG-12345
      - name: reviewer
        value: [email protected]

approver_inputs populate user-defined fields on the approval step. The schema for these is set when the approval step is authored (see /creating-pipelines).

Step 4: Reject a Harness approval

Call MCP tool: harness:harness_execute
Parameters:
  resource_type: "approval_instance"
  action: "reject"
  resource_id: "<approval_id>"
  body:
    comments: "Rejecting - missing test coverage on the auth flow. Re-run after fix."

Pipeline execution moves to a Failed / Rejected terminal state once the approval is rejected.

Step 5: External approvals (Jira / ServiceNow)

Approval types JiraApproval, ServiceNowApproval, and CustomApproval cannot be approved via MCP. The list response shows their state for visibility, but completion happens in:

  • Jira: transition the linked ticket through the configured statuses.
  • ServiceNow: complete the change request per its workflow.
  • Custom: invoke the configured custom approval endpoint with the right payload.

The pipeline polls the external system and resumes when the configured status is reached.

Common patterns

"Who's holding up the prod deploy?"

harness:harness_list execution filters.status=Paused org_id=<org> project_id=<project>

For each paused execution:

harness:harness_list approval_instance filters.execution_id=<id> filters.approval_status=WAITING

The response shows approver groups (users + group identifiers), so you can ping them directly.

"Approve this deploy with a change ticket reference"

harness:harness_execute approval_instance action=approve resource_id=<approval_id>
  body:
    comments: "Linked to CHG-12345"
    approver_inputs:
      - name: change_ticket
        value: CHG-12345

"Show all my pending approvals"

There's no direct "approvals waiting on me" query - you'd need to list executions in Paused state and check each. For a frequent workflow, consider building a saved filter on the Harness UI.

Examples

  • "Approve the staging deploy for checkout-service" - find execution, list approvals filtered to WAITING, approve by id
  • "What's blocking the prod release?" - harness:harness_list execution filters.status=Paused then list approvals
  • "Reject this deploy - tests are flaky" - harness:harness_execute approval_instance action=reject with comments
  • "Approve with a Jira ticket reference" - approve with approver_inputs: [{name: change_ticket, value: ...}]
  • "Audit approvals from last week" - list approvals filtered by approval_status: APPROVED and inspect timestamps

Related skills

Prerequisites (skills typically run before this one):

Composes with (skills commonly invoked together):

Follow-ups (skills commonly chained after this one):

Performance Notes

  • execution_id is required on list - approvals don't have a global query path. Always start from an execution.
  • Status filter narrows the response - prefer WAITING when triaging blockers, APPROVED/REJECTED for audit.
  • External approval state is reflected in the list response but not modifiable here.

Troubleshooting

  • "execution_id required" - approvals are always scoped to an execution. Use harness:harness_list execution filters.status=Paused to find candidates.
  • "approval_id not found" - the approval may already be APPROVED / REJECTED / EXPIRED. List with no status filter to see history.
  • External approval not progressing - this skill can't influence Jira / ServiceNow / Custom approvals. Check the external system's workflow status.
  • Approve action returns 403 - the calling user / service account must be a member of the configured approver group on that approval step.
  • approver_inputs rejected - the input schema is defined on the approval step itself. Run harness:harness_get approval_instance first and look at the configured input definitions.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.