Like base::interactive(), is_interactive() returns TRUE when the function runs interactively and FALSE when it runs in batch mode. It also checks:

  • Whether knitr or an RStudio notebook is in progress.

  • The rlang_interactive global option. If set to a single TRUE or FALSE, is_interactive() returns that value instead. This escape hatch is useful in unit tests or to manually turn on interactive features in RMarkdown outputs.

with_interactive() and scoped_interactive() set the global option conveniently.


scoped_interactive(value = TRUE, frame = caller_env())

with_interactive(expr, value = TRUE)



A single TRUE or FALSE. This overrides the return value of is_interactive().


The environment of a running function which defines the scope of the temporary options. When the function returns, the options are reset to their original values.


An expression to evaluate with interactivity set to value.