The delay is a core feature of Plucky. It enables the software to function as an effective self-control tool by separating impulsive decisions from intentional ones.

Part 1: Summary

❌ The problem with traditional blockers

Consider a typical scenario using Apple Screen Time:

  1. Merry sets a PIN to lock his app and website settings
  2. He feels tempted to use social media
  3. He disables the blocker by entering the PIN
  4. He regrets the decision and asks his friend Pippin to set a new PIN
  5. Later, Merry wants to add more restrictions
  6. He can’t make changes because he no longer knows the PIN

⚠️ Limitations

Traditional blockers often fail in either or both of two important ways:

  • They don’t prevent users from undoing their commitments in moments of weakness
  • They don’t allow users to strengthen their commitments without friction

✅ How Plucky solves this

Plucky introduces a delay mechanism that changes how configuration works.

  1. Merry sets a 10-minute delay
  2. He feels tempted to use social media
  3. He attempts to remove restrictions → the change is delayed by 10 minutes
  4. He attempts to allow social media → the change is delayed by 10 minutes
  5. He attempts to uninstall Plucky → the action is delayed by 10 minutes
  6. He decides instead to block more distractions → the change is applied immediately

💡 Key principles

Plucky delays harmful changes, but allows helpful changes immediately.

Make it instant to tighten the belt, and slow to loosen the belt.

Not a timer

The delay is not a timer. Sometimes new users think the delay is a timer that once set counts down to 0, and then must be reset. While the Plucky delay could be used that way, doing so is nearly always a misunderstanding of how it is intended to be used.

For example, consider Peter. On Monday morning, Peter installs Plucky and immediately sets his delay to one hour by typing pluck + delay 1h. After typing that command he does not change the delay. At 2pm on Monday, he realizes he needs access to https://en.wikipedia.org/wiki/Mona_Lisa and it is blocked by his current configuration. So, Peter, without changing his delay at all simply clicks the Plucky button to allow https://en.wikipedia.org/wiki/Mona_Lisa . This change will not take effect until 3pm, one hour later. At 3pm, the configuration change becomes effective and Peter can now access https://en.wikipedia.org/wiki/Mona_Lisa . He did this without changing his delay from one hour. His delay was one hour, and it still is, and Peter, in fact, keeps his delay at one hour for the remainder of his happy life.

🤔 Questions and answers

How long will the delay make me wait?

That’s up to you. When you first install Plucky it will be set to 0 seconds. You can increase that by however much feels right to you, but it’s recommended to start with a small delay (no more than a few minutes) for the first few days using Plucky.

Can I disable or shorten the delay?

Yes—but changes that reduce or remove the delay are themselves subject to the current delay. Reducing your delay from 10 minutes → 1 minute means waiting 9 minutes in real life for the change to happen.

What if I urgently need access to something I blocked?

You can allow it—but you’ll need to wait out the delay. This pause is intentional and gives you time to confirm the decision is necessary. But if you really need to skip the wait, you can request help from a friend by using expedite.

Where can I see pending changes?

If you click the Plucky button and go the config tab, you can see all pending changes in the Timeline. Rules listed above the yellow line indicate pending changes which are currently waiting out the delay before being applied.

In a terminal interface, you can see pending changes with the command pluck future.


Part 2: How to use

Basics

When the delay is 0 (nil), any change to Plucky configuration will have immediate effect.

For example, all the following commands will have immediate effect.

pluck + allow a.com
pluck + allow everything
pluck uninstall

However, when the delay is not 0 (nil), any changes to Plucky configuration that will result in greater access will be delayed.

For example, after the following sequence access to b.com will still not be granted until 30 seconds have elapsed.

pluck + delay 30
pluck + allow b.com

Any decreases to the delay must also survive the delay period. So, given a delay of 30 seconds, after requesting the delay be set to 0, 30 seconds must elapse.

$ pluck + delay 0
$ pluck delay
30
$ sleep 30
$ pluck delay
0

In addition, uninstalling is only permitted when the delay is 0. So the following will not result in Plucky being uninstalled.

pluck + delay 1
pluck uninstall

But the next sequence will.

pluck + delay 0
sleep 30
pluck uninstall

Advice

Use a 10 second delay your first day using Plucky until you understand how it works and are able to gauge what value would work best for you. After that, adjust the timer up and down as necessary, depending on your level of self-control. See also tips for more advice.

Setting the delay

You can set the delay in a console window or using the interface in the browser.

TODO: screencast of setting the delay.

Skipping the delay by using expedite approvals

The delay for any change can be skipped by using expedite.

Varying the delay by time of day

Plucky allows you to vary the delay by time of day.

pluck when 0-8 delay 3600
pluck when 8-12 delay 30
pluck when 12-24 delay 7200

See hrs3 for more on the time format used.

Delay patterns (advanced)

Delay patterns are somewhat complex, hard to describe, and to use them well may require some significant thought. If those hurdles don’t stop you, read on.

It is possible to use different delays for different changes to Plucky configuration through a feature known as “delay patterns”. For example, to specify that the allowing a new youtube video should require a 45 minute delay, the delay pattern + allow https://www.youtube.com/ could be used like so:

pluck delay 45m "+ allow https://www.youtube.com/"

Thus would any rules that allow urls starting with https://www.youtube.com/ be delayed by 45 minutes.

Similarly, to use a delay of 10 hours before removing any rule that blocks:

pluck delay 10h "- block"

To use a delay of 24 hours before a new allow everything rule would take effect:

pluck delay 24h "+ allow everything"

In the 3 examples above, everything between the double quotes is called the delay pattern.

Special syntax can be used to force certain kinds of matching of delay patterns.

Delay pattern details

TL;DR: In Plucky 1.13 or newer, leave out the anchor characters (^, $, or ~) for best results, unless you are changing the delay of a feature.

As of Plucky 1.13, delay patterns match naturally by default. Older versions of Plucky use loose matching by default.

A delay pattern may match naturally, loosely (a substring match), exactly (an exact match), or prefixedly (a prefix match). Although the ^$ syntax for delay patterns is borrowed from regular expressions, delay patterns are not regular expressions.

A delay pattern starts with an operation character that is + (add) or - (del) to indicate whether the pattern applies to adding rules or to removing existing rules.

After the operation character (+ or -) is a space.

After the space is an optional anchor character, which may be either ~ or ^. If neither are specified the pattern matches naturally, with a few special exceptions.

A pattern may end in a $ character to indicate the end of the pattern.

To restate, the special markers in delay patterns are:

~
match loosely (e.g. + ~youtu matches + allow www.youtube.com)
^
match only if the start of a rule strictly matches the characters that follow (see examples below).
^$
match only if the rule matches exactly, from beginning to end (see examples below).
$
match only if the rule ends with a match for the pattern.

When there is no special marker, the delay pattern matches naturally, which means that the delay pattern is first converted to the internal Plucky language syntax, and then matching is performed over each term in the result, which is what somebody who didn’t read any of this documentation would probably expect.

For example:

pluck delay 1h
pluck delay 45m "+ allow https://www.youtube.com/"                 ## delay new youtube videos by 45 minutes
pluck + allow https://www.youtube.com/watch?v=3dNGacak8Dc          ## delayed 45 minutes
pluck + allow https://www.youtube.com/watch?v=3dNGacak8Dc user:jon ## also delayed 45 minutes
pluck + allow youtube.com                                          ## delayed 1 hour

Be aware that host-specific rules do not at present affect urls, so most of the time, you want to use a url in delay patterns rather than a simple host name.

pluck delay 45m "+ allow a.com"                                    ## probably bad
pluck delay 45m "+ allow https://a.com/"                           ## probably good

Because adding new allow rules, removing any block rules, and allowing everything are three operations that users often want to create a special delay pattern for, the following are handled as special cases to do these three things respectively.

pluck delay 30m "+ allow"            ## delay any new allowances by 30 minutes
pluck delay 10m "+ allow otherwise"  ## delay the allow otherwise rule by 40 minutes
pluck delay 10h "- block"            ## delay removal of any blocks by 10 hours
pluck delay 24h "+ allow everything" ## delay allowing of "everything" by 24 hours

Specifying delays for specific features

To alter how long it takes to add or remove a feature, use ^feature: as in the example below, or else the pattern will not have the desired effect because the specificity of an unanchored pattern will be too low to beat some internal Plucky rules that govern whether adding or removing any given feature should be delayed.

pluck delay 24h "- nhb"            ## fails, match specificity is too low
pluck delay 24h "- ^feature:nhb"   ## works, require 24 hours to remove nhb feature

Specifying delays for unadmin

Similarly to features, a ^ or $ is necessary to make a delay pattern for unadmin effective.

pluck delay 24h "- ^unadmin:peter"

Elimination of the delay-delay

In older versions of Plucky, one could set a delay-delay that would dictate how long any change to a delay would take. For example, to set a delay-delay of 24 hours:

pluck delay 24h delay

However, the delay-delay has been removed in modern Plucky. Those who relied on the delay-delay are encouraged to switch to the lockdelays feature, which is described below.

Locking all delays with feature:lockdelays

Note that this section describes a feature that is obscure and the the majority of Plucky users need not use. The delay is not a timer, and if you think the delay is a timer, please do not read this section because it will only serve to further cement an incorrect view of the delay.

Occasionally, those who make heavy use of delay patterns want to lock all delays for some period of time. That can be accomplished with feature:lockdelays.

For example, consider Peter, who has gotten in the habit of invoking pluck + now+30m allow everything when he feels like to binge watching YouTube, but he doesn’t want to permit himself that luxury any longer. So, he decides to force a longer delay of 1 day for the allow everything rule, while keeping a shorter general delay of 10 minutes (600 seconds). He might do the following to accomplish his goal.

pluck + delay 24h "+ allow everything"
pluck + delay 600
pluck + lockdelays   ## no delay can be changed while lockdelays is in effect

After lockdelays is in effect, delays should not change, although the behavior will vary based on the Plucky version – Plucky older than 1.17.37 do not behave quite as well.

Importing configurations

On https://u.pluckeye.net/, devices have delays as well as configurations. A delay on a device governs only the delay for changing the configuration assigned to that device; it does not govern changes to the configuration itself.


Last updated: 2026-05-12