---
title: "oz0 plugin declare"
description: "Say what a plugin's functions do when their listing declares nothing about it."
canonical_url: "https://docs.oz0.ai/reference/cli/oz0/plugin/declare"
---
# oz0 plugin declare

> Say what a plugin's functions do when their listing declares nothing about it.

For: Operators and developers looking up a command.

Say what a plugin's functions do when their listing declares nothing about it. Such a function asks a person
at every call.

Each \<function>=\<type> writes one rule of the tenant's tool policy naming the function, placed as
oz0 plugin policy places a switch, with the action the tenant's policy gives functions of that type: read (it only
reads), write (it writes, destroys nothing and stays inside the tenant), sends-out (it sends beyond the tenant and
destroys nothing) or destructive (it may delete or overwrite).

Saying a function reads or writes lets its calls run, which loosens the policy: it takes a reason, and waits for
another admin where four eyes are on. The rule says the admin's answer, and the reason is kept with it.

Only functions that declare nothing are taken; a function with annotations is switched with oz0 plugin policy. The
listing itself still says nothing, so rules by kind and conditions on tool.class read the function as one that
declares nothing: ask the plugin's author for the annotations.

## Usage

```bash
oz0 plugin declare <plugin> <function>=<read|write|sends-out|destructive>... [flags]
```

## Flags

<table>
<thead>
  <tr>
    <th>
      Flag
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Default
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        --decision-ref
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      
    </td>
    
    <td>
      the decision or case the change follows, such as a case number (at most 200 characters)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        --reason
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      
    </td>
    
    <td>
      why, required for every governance change (at most 500 characters; default $OZ0_REASON); the audit log keeps it
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        --tenant
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        default
      </code>
    </td>
    
    <td>
      tenant
    </td>
  </tr>
</tbody>
</table>

## Inherited flags

<table>
<thead>
  <tr>
    <th>
      Flag
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Default
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        --context
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        $OZ0_CONTEXT or &lt;config dir>/orchestrator-zero/context.json
      </code>
    </td>
    
    <td>
      CLI context file written by server init
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        --log-level
      </code>
    </td>
    
    <td>
      string
    </td>
    
    <td>
      <code>
        info
      </code>
    </td>
    
    <td>
      log level: debug, info, warn or error
    </td>
  </tr>
</tbody>
</table>

See [all `oz0` commands](https://docs.oz0.ai/reference/cli/oz0) and the [global flags](https://docs.oz0.ai/reference/cli/oz0#global-flags).


## Sitemap

See the full [sitemap](https://docs.oz0.ai/sitemap.md) for all pages.
