> ## Documentation Index
> Fetch the complete documentation index at: https://code.storage/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# deleteBranch()

> Delete a branch from the repository.

<CodeGroup>
  ```typescript TypeScript theme={null} theme={"theme":{"light":"github-light","dark":"min-dark"}}
  // Delete a persistent branch
  const result = await repo.deleteBranch({
    name: 'feature/old-onboarding',
  });

  console.log(result.message);

  // Delete an ephemeral branch
  const ephemeralResult = await repo.deleteBranch({
    name: 'merge/8e831bf0-3f19-45dc-b9b9-8aad571c9017',
    ephemeral: true,
  });
  ```

  ```python Python theme={null} theme={"theme":{"light":"github-light","dark":"min-dark"}}
  # Delete a persistent branch
  result = await repo.delete_branch(name="feature/old-onboarding")
  print(result["message"])

  # Delete an ephemeral branch
  ephemeral_result = await repo.delete_branch(
      name="merge/8e831bf0-3f19-45dc-b9b9-8aad571c9017",
      ephemeral=True,
  )
  ```

  ```go Go theme={null} theme={"theme":{"light":"github-light","dark":"min-dark"}}
  // Delete a persistent branch
  result, err := repo.DeleteBranch(context.Background(), storage.DeleteBranchOptions{
  	Name: "feature/old-onboarding",
  })
  fmt.Println(result.Message)

  // Delete an ephemeral branch
  ephemeralTrue := true
  ephemeralResult, err := repo.DeleteBranch(context.Background(), storage.DeleteBranchOptions{
  	Name:      "merge/8e831bf0-3f19-45dc-b9b9-8aad571c9017",
  	Ephemeral: &ephemeralTrue,
  })
  ```
</CodeGroup>

Branch names must not start with `refs/`.

The repository's default branch cannot be deleted. This protection only applies to non-ephemeral
branches — an ephemeral branch that shares the same short name as the default branch can still be
deleted.

## Options

<ParamField path="name" type="string" required>
  Branch name to delete (e.g. `feature/old-onboarding`). Must not start with `refs/`.
</ParamField>

<ParamField path="ephemeral" type="boolean">
  Delete from the ephemeral namespace instead of the persistent one (default: `false`). Use this to
  clean up branches created with `ephemeral: true`.
</ParamField>

<ParamField path="refPolicies" type="object[]">
  Ordered per-ref policy rules (`{ pattern, ops? }`) embedded in the per-call JWT. First match wins. Python: `ref_policies`. Go: `RefPolicies` with type `storage.RefPolicyList`. See the [Branch Protection guide](/docs/guides/branch-protection).
</ParamField>

## Response

<ResponseField name="name" type="string">
  The deleted branch name.
</ResponseField>

<ResponseField name="ephemeral" type="boolean">
  Whether the deleted branch was in the ephemeral namespace.
</ResponseField>

<ResponseField name="message" type="string">
  Confirmation message from the API.
</ResponseField>
