IEBC defends failure to punish early campaigns, cites legal limits
Listen to article
5 min listen
Audio reading is not supported on this browser.
Ready
Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.

KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
Rachael Mutabasi
·
3 hours agoRead nextOpens a fresh page.
The commissioner said the official election period for the 2027 General Election is expected to begin around August next year, adding that until then, the IEBC cannot legally prosecute or punish political actors under campaign regulations.
The Independent Electoral and Boundaries Commission (IEBC) has defended its inability to punish politicians for early campaigns, arguing that its powers to enforce campaign rules only take effect once the official campaign period is declared.
Speaking during an interview with NTV on Wednesday, IEBC Commissioner Alutalala Mukhwana said many politicians knowingly exploit the legal limitation and then accuse it of selective enforcement, even though the law does not allow it to act before campaigns officially begin.
“What I think that politicians do is that they deliberately adopt stances which undermine the credibility of the institution. If you look at what happens out of the campaign period, you saw what happened in Keumbu; you’ve seen our politicians basically campaigning, and then we are told bad utterances were made. Why are you not punishing?” We are not in an electoral campaign period,” he said.
More To Read
- KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
- 𝐄𝐚𝐬𝐭𝐥𝐞𝐢𝐠𝐡 𝐕𝐨𝐢𝐜𝐞 𝐚𝐭 𝐍𝐢𝐧𝐞 – All set for Ol Kalou by-election as IEBC deploys voting materials
- IEBC outlines voting process ahead of Ol Kalou by-election
- UDA rejects Gachagua’s vote-rigging claims ahead of Ol Kalou by-election
- ELOG flags widespread voter bribery, campaign malpractice ahead of Ol Kalou by-election
- Kenya faces 84 per cent risk of electoral violence in 2027, report warns
The commissioner said the official election period for the 2027 General Election is expected to begin around August next year, adding that until then, the IEBC cannot legally prosecute or punish political actors under campaign regulations.
He said whatever happens before the election period is likely to affect the electoral environment and how the final results are received by Kenyans.
Mukhwana also noted that the commission has repeatedly faced criticism for failing to take action against political leaders making inflammatory remarks at public gatherings, including funerals and other social events, yet such activities fall outside its legal mandate before the official campaign period.
Latest Stories
- Sierra Leone drops treason charges against former President Ernest Bai Koroma over health concerns
- Public universities grapple with Sh28.9 billion funding gap as delayed capitation bites
- KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
- 𝐄𝐚𝐬𝐭𝐥𝐞𝐢𝐠𝐡 𝐕𝐨𝐢𝐜𝐞 𝐚𝐭 𝐍𝐢𝐧𝐞 – All set for Ol Kalou by-election as IEBC deploys voting materials
He warned that continued attacks against the commission could create a situation where the outcome of the 2027 General Election may not be accepted by both winners and losers if public confidence is not restored.
“IEBC will preside over these elections in 2027, and the ground would have been prepared for rejection of the results, either way. And the result would be that whoever wins will not be accepted, and whoever loses will not accept,” Mukhwana said.
He blamed politicians for making unverified statements that have affected public trust in the electoral body, saying it is in the interest of Kenyans for the IEBC to effectively carry out its duties.
Mukhwana also criticised public officials accused of violating electoral laws, saying their actions have made the IEBC’s work harder by creating a perception that the commission favours the government. He urged Kenyans to reject leaders promoting tribal politics and division.
He further defended the current IEBC team against criticism linked to past commissions, saying the new leadership should be judged by its own performance.
“I’m only one year here. Whose vote have I stolen? We are paying for the sins of our fathers, not our own sins. Kenyans must be kind to us and give us a chance,” he posed.
The commissioner said the IEBC has faced scrutiny over its preparedness for the 2027 General Election, including concerns over the voter register, by-elections, election violence and voter bribery allegations.
In the Ol Kalou parliamentary by-election, rival political camps have accused each other of influencing voters using cash, government-branded mattresses and gas cylinders.
Mukhwana said the IEBC cannot be blamed for violence during elections, as security is handled by other agencies.
“People say IEBC should stop violence. That is not our mandate. Our responsibility is to conduct and supervise elections. Security is the responsibility of the police and other agencies,” he said.
He said the current commission has conducted 32 by-elections, with only two ending up in court, adding that none of the petitions found the IEBC guilty of electoral malpractice.
Mukhwana said the IEBC works with agencies including the National Police Service, NCIC, EACC and IPOA to support peaceful elections.
He added that the commission’s role is to prepare and supervise elections, train polling officials, ensure election materials are delivered safely and declare results that reflect the will of voters.
“We should be judged on what we do, not on our history,” he said.
Other Topics To Read
Top Stories Today
- Public universities grapple with Sh28.9 billion funding gap as delayed capitation bites
- Sierra Leone withdraws treason case against ex-president Koroma
- KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-election
- Taifa Care gets major boost as Kenya, US sign Sh206.9 billion deal
- Government resolves Harambee Starlets allowance row, players receive dues
- Besigye rejects court-appointed lawyers in ongoing treason case
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending

Sierra Leone drops treason charges against former President Ernest Bai Koroma over health concernsAfrica
|Rachael Mutabasi
|1 hour ago

HPV vaccine cuts cervical cancer deaths by nearly 80 per cent, landmark study findsHealth
|Charity Kilei
|7 hours ago

Kenya and US sign Sh206.9 billion health deal to boost Taifa Care and disease controlHealth
|Rachael Mutabasi
|4 hours ago

Government resolves Harambee Starlets allowance row, players receive duesSports
|Rachael Mutabasi
|4 hours ago
KHRC calls for urgent action against electoral violence ahead of Ol Kalou by-electionNews
|Rachael Mutabasi
|3 hours ago

Kenya opens diplomatic mission in Jamaica, expanding Caribbean presenceNews
|Mwangi Maina
|10 hours ago

Ruto gifts AFC Leopards Sh10 million, pledges sponsorship boost ahead of new seasonNews
|Erick Kariuki
|13 hours ago

Nigeria offers clues to new US Africa strategyAfrica
|DW News
|14 hours ago

Explainer: Key steps before reporting to university after securing KUCCPS placementNews
|Lucy Mumbi
|16 hours ago

ELOG flags widespread voter bribery, campaign malpractice ahead of Ol Kalou by-electionPolitics
|Mary Wambui
|11 hours ago
