Skip to main content

on-run-start & on-run-end

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


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 that return SQL statements

Usage notes

  • The on-run-end hook has additional jinja variables available in the context — check out the docs.


In older versions of dbt, the most common use of post-hook was to execute grant statements, to apply database permissions to models right after creating them. We recommend using the grants resource config instead, in order to automatically apply grants when your dbt model runs.

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

This leverages the schemas variable that is only available in an on-run-end hook.

- "{% for schema in schemas %}grant usage on schema {{ schema }} to group reporter; {% endfor %}"

Call a macro to grant privileges

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

Additional examples

We've compiled some more in-depth examples here.