Update checkbox value through plugin (Craft 3)
You need to set the field value, not the options

$entry-&gt;setFieldValue('fieldHandle' [
    'value1', 'value2'
});
Craft::$app-&gt;getElements()-&gt;saveElement($entry);


If you want to change the values, the easiest method is

$allOptions = $entry-&gt;getFieldValue('fieldHandle');
$selected = [];
foreach($allOptions as $option){
    if($option-&gt;selected){
         $selected[] = $option-&gt;value;
    }
}
// unset a value
unset($selected[1]);
// add another value
$selected[] = 'anotherValue';
$entry-&gt;setFieldValue('fieldHandle', $selected);
Craft::$app-&gt;getElements()-&gt;saveElement($entry);


edit

Another approach - a little bit less code and more general since it's the same for every single field in Craft - but more resource heavy

$field = Craft::$app-&gt;getFields()-&gt;getFieldByHandle('handle);
$selected = $field-&gt;serializeValue($entry-&gt;getFieldValue('handle'), $entry);
$selected[] = 'anotherValue';
$entry-&gt;setFieldValue('handle', $selected);
Craft::$app-&gt;getElements()-&gt;saveElement($entry);