# CodePipelineStepExecution

How one step of a code pipeline run is going: its status, output, token usage, questions and the agent's transcript.

**Kind:** an object, used in responses.

## Fields

Every field is present in a response; empty ones are `null`.

| Field | Type | Description |
|---|---|---|
| `id` | `uuid` | The step's id within the run. Tool calls and transcript entries refer to it as `stepExecutionId`, and you use it to fetch them. |
| `stepName` | `string` | The step's name. |
| `agentName` | `string` | The agent running the step. |
| `status` | [`CodePipelineStepExecutionStatus`](https://docs.maitento.com/reference/types/code-pipeline-step-execution-status.md) | Where the step is. |
| `output` | `string \| null` | What the agent has written so far, taken from the coding tool's output. |
| `finalResult` | `string \| null` | The step's result. For a step with `outputJsonSchema`, the JSON that matches the schema. |
| `outputStructured` | [`CodePipelineStructuredOutput`](https://docs.maitento.com/reference/types/code-pipeline-structured-output.md)`\| null` | The agent's structured summary of the step, for a step with `isStructuredOutput`. |
| `failureDetails` | `string \| null` | Why the step failed. Null unless it did. |
| `dateStart` | `datetime \| null` | When the step started, in UTC. Null until it starts. |
| `dateEnd` | `datetime \| null` | When the step ended, in UTC. Null until it ends. |
| `didCommit` | `boolean` | Whether the step made a git commit. |
| `tokenUsage` | [`CodePipelineTokenUsageEntry`](https://docs.maitento.com/reference/types/code-pipeline-token-usage-entry.md)`[] \| null` | The tokens the step used, by token type and model. |
| `humanInteractionRequests` | [`CodePipelineHumanInteractionRequest`](https://docs.maitento.com/reference/types/code-pipeline-human-interaction-request.md)`[] \| null` | The questions the agent asked a person during the step, with their answers. |
| `engineSessionId` | `string \| null` | The coding tool's session id when the step last ran, so a resumed step continues the same conversation. Null for coding tools without resumable sessions. |
| `outputs` | [`CodePipelineEngineOutput`](https://docs.maitento.com/reference/types/code-pipeline-engine-output.md)`[] \| null` | Every call the step made to its coding tool, with the exit code and output streams, whether it succeeded or failed, across retries and resumes. The list is capped, keeping the first and latest calls. |
| `challengeLoopTurns` | [`CodePipelineChallengeTurn`](https://docs.maitento.com/reference/types/code-pipeline-challenge-turn.md)`[] \| null` | The rounds of the step's "is it really done?" check, for a step with `runChallengeLoop`. Null or empty for other steps. |
| `toolUseRefs` | [`CodePipelineChildRef`](https://docs.maitento.com/reference/types/code-pipeline-child-ref.md)`[] \| null` | References to the step's tool calls, which you fetch separately. An empty array means the step made no tool calls. |
| `contextEntryRefs` | [`CodePipelineChildRef`](https://docs.maitento.com/reference/types/code-pipeline-child-ref.md)`[] \| null` | References to the step's transcript entries (the agent's text and thinking), which you fetch separately. An empty array means there are none. |

## Example

```json
{
  "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
  "stepName": "...",
  "agentName": "...",
  "status": "NotStarted",
  "output": "...",
  "finalResult": "...",
  "outputStructured": {
    "summary": "...",
    "wasSuccessful": false,
    "isBlocked": false,
    "blockedReason": "...",
    "isAdditionalWorkRequired": false
  },
  "failureDetails": "...",
  "dateStart": "2026-10-26T12:00:00.0000000Z",
  "dateEnd": "2026-10-26T12:00:00.0000000Z",
  "didCommit": false,
  "tokenUsage": [
    {
      "type": "...",
      "amount": 0,
      "model": "...",
      "wireModel": "...",
      "requestedModel": "...",
      "resolvedModel": "...",
      "credentialId": "...",
      "tier": "..."
    }
  ],
  "humanInteractionRequests": [
    {
      "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "question": "...",
      "context": "...",
      "dateRequested": "2026-10-26T12:00:00.0000000Z",
      "suggestedAnswers": [],
      "answer": "...",
      "dateAnswered": "2026-10-26T12:00:00.0000000Z",
      "answerAuthor": {}
    }
  ],
  "engineSessionId": "...",
  "outputs": [
    {
      "sequence": 0,
      "dateUtc": "2026-10-26T12:00:00.0000000Z",
      "purpose": "...",
      "returnCode": 0,
      "stdOut": "...",
      "stdErr": "...",
      "internalError": "...",
      "terminationReason": "...",
      "isTruncated": false
    }
  ],
  "challengeLoopTurns": [
    {
      "turn": 0,
      "reworkNeeded": false,
      "remainingRiskPercent": 0,
      "parsed": false,
      "outstandingConcerns": "..."
    }
  ],
  "toolUseRefs": [
    {
      "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "rev": 0
    }
  ],
  "contextEntryRefs": [
    {
      "id": "3f2b8c1e-5d4a-4e6b-9c7d-2a1b0c9d8e7f",
      "rev": 0
    }
  ]
}
```

## Where it's used

- Inside [`CodePipelinePhaseExecution`](https://docs.maitento.com/reference/types/code-pipeline-phase-execution.md)
