---
title: "Managing Jobs"
description: "Managing jobs in your codebase and the dashboard"
---

## Disabling jobs

To prevent a job from processing new runs, you can disable it by setting the `enabled` option:

```ts
client.defineJob({
  id: "example-job",
  name: "Example Job",
  version: "0.1.0",
  trigger: eventTrigger({ name: "example.event" }),
  enabled: false,
  run: async (payload, io, ctx) => {
    // your job code here
  },
});
```

If you omit the `enabled` option, it will default to `true`.

The job will only be disabled in environments that have seen the `enabled = false` value. So the job will remain enabled in production until the code with the `enabled = false` is deployed to production.

<Note>
  Currently this is the only way to disable a job. If you'd like to disable a job in the Dashboard,
  please reach out to us on [Discord](https://discord.gg/kA47vcd8P6) and let us know 👋
</Note>

Once a job is disabled no **new** runs will be created for that job, and it will still be visible in the Dashboard as disabled:

![Disabled Job](/images/disabled-job.png)

### In-progress runs

In-progress runs will be allowed to finish, even runs that are currently delayed from a call to `io.wait`. If you'd like to completely stop in-progress runs, you have two options:

- Set the `enabled` option to false and then `throw` an error at the top of your job `run` function.

```ts
client.defineJob({
  id: "example-job",
  name: "Example Job",
  version: "0.1.0",
  trigger: eventTrigger({ name: "example.event" }),
  enabled: false,
  run: async (payload, io, ctx) => {
    throw new Error("Job disabled");
  },
});
```

- Delete the job from your codebase. This will disable the job as well but also stop in progress runs.

### Disabling in production with env vars

You can easily disable jobs in production using env vars so you don't have to deploy new code to disable a job.

```ts
client.defineJob({
  id: "example-job",
  name: "Example Job",
  version: "0.1.0",
  trigger: eventTrigger({ name: "example.event" }),
  enabled: process.env.TRIGGER_JOBS_DISABLED === "true",
  run: async (payload, io, ctx) => {
    // your job code here
  },
});
```

Then you can disable the job in production by setting the `TRIGGER_JOBS_DISABLED` env var to `"true"`. And removing the env var will re-enable the job.

## Deleting jobs

Once you have disabled a job in all environments, you can delete it from the dashboard by navigating to the Job list page and clicking the "triple-dot" menu next to the job you want to delete:

![Job Menu](/images/job-triple-dot-menu.png)

This will bring up a dialog confirming that you want to delete the job and all of its history:

![Delete Job Dialog](/images/delete-job.png)
