Filter Syntax
For source, push and snap jobs, a filesystem filter must be defined (field filesystems).
A filter takes a filesystem path (in the ZFS filesystem hierarchy) as parameter and returns true (pass) or false (block).
A filter is specified as a YAML dictionary with patterns as keys and booleans as values. The following rules determine which result is chosen for a given filesystem path:
- More specific path patterns win over less specific ones 
- Non-wildcard patterns (full path patterns) win over subtree wildcards (< at end of pattern) 
- If the path in question does not match any pattern, the result is - false.
The subtree wildcard < means “the dataset left of < and all its children”.
Tip
You can try out patterns for a configured job using the zrepl test filesystems subcommand for push and source jobs.
Examples
Full Access
The following configuration will allow access to all filesystems.
jobs:
- type: source
  filesystems: {
    "<": true,
  }
  ...
Fine-grained
The following configuration demonstrates all rules presented above.
jobs:
- type: source
  filesystems: {
    "tank<": true,          # rule 1
    "tank/foo<": false,     # rule 2
    "tank/foo/bar": true,  # rule 3
  }
  ...
Which rule applies to given path, and what is the result?
tank/foo/bar/loo => 2    false
tank/bar         => 1    true
tank/foo/bar     => 3    true
zroot            => NONE false
tank/var/log     => 1    true