# on-run-start & on-run-end

dbt\_project.yml

```yml
on-run-start: sql-statement | [sql-statement]
on-run-end: sql-statement | [sql-statement]
```

## Definition

A SQL statement (or list of SQL statements) to be run at the start or end of the following commands:

`dbt build`, `dbt compile`, `dbt docs generate`, `dbt run`, `dbt seed`, `dbt snapshot`, or `dbt test`.

`on-run-start` and `on-run-end` hooks can also [call macros](#call-a-macro-to-grant-privileges) that return SQL statements.

## Usage notes

* The `on-run-end` hook has additional Jinja variables available in the context — check out the [docs](../dbt-jinja-functions/on-run-end-context.md).

## Examples

### Grant privileges on all schemas that dbt uses at the end of a run

This leverages the [schemas](../dbt-jinja-functions/schemas.md) variable that is only available in an `on-run-end` hook.

dbt\_project.yml

```yml
on-run-end:
  - "{% for schema in schemas %}grant usage on schema {{ schema }} to group reporter; {% endfor %}"
```

### Call a macro to grant privileges

dbt\_project.yml

```yml
on-run-end: "{{ grant_select(schemas) }}"
```

### Additional examples

We've compiled some more in-depth examples [here](../../docs/build/hooks-operations.md#additional-examples).

## Was this page helpful?

YesNo

[Privacy policy](https://www.getdbt.com/cloud/privacy-policy)[Create a GitHub issue](https://github.com/dbt-labs/docs.getdbt.com/issues)

This site is protected by reCAPTCHA and the Google [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms) apply.
