ruvnet/ruflo · error · TeammateError

DELEGATION_DENIED

DELEGATION_DENIED

Error message

No active delegation from ${fromId} to ${toId}

What it means

revokeDelegation() searched team.delegations for an entry with matching fromId/toId that is still active and found none. The delegation was already revoked, never existed, or the ids are wrong — there is no active grant to revoke.

Source

Thrown at v3/plugins/teammate-plugin/src/teammate-bridge.ts:1462

    this.emit('delegate:granted', { team: teamName, from: fromId, to: toId, permissions });

    return delegation;
  }

  /**
   * Revoke delegation from a teammate
   */
  async revokeDelegation(teamName: string, fromId: string, toId: string): Promise<void> {
    this.ensureAvailable();

    const team = this.getTeamOrThrow(teamName);

    const delegationIndex = team.delegations.findIndex(
      d => d.fromId === fromId && d.toId === toId && d.active
    );

    if (delegationIndex === -1) {
      throw new TeammateError(
        `No active delegation from ${fromId} to ${toId}`,
        TeammateErrorCode.DELEGATION_DENIED,
        teamName
      );
    }

    team.delegations[delegationIndex].active = false;

    // Update target teammate
    const toTeammate = team.teammates.find(t => t.id === toId);
    if (toTeammate) {
      const delegation = team.delegations[delegationIndex];
      toTeammate.delegatedPermissions = (toTeammate.delegatedPermissions ?? [])
        .filter(p => !delegation.permissions.includes(p));

      if (toTeammate.delegatedPermissions.length === 0) {
        toTeammate.delegatedFrom = undefined;
      }

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Verify a delegation exists between the two agents before revoking/acting on it; list active delegations first.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/plugins/teammate-plugin/src/teammate-bridge.ts:1462 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/1fcd68fc94ba1184. Report an issue: GitHub.