Listen to article
6 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.
πππ¬ππ₯ππ’π π‘ ππ¨π’ππ ππ ππ’π§π – All set for Ol Kalou by-election on Thursday as security tightened
Zawadi Charity
Β Β·Β
13 hours agoRead nextOpens a fresh page.
The DCP leader said the deployment of more than 2,000 police officers in Olkalou was unprecedented in Kenyaβs electoral history and called for all officers involved in security operations to be identifiable.
The Democracy For The Citizens Party (DCP) has demanded that the over 1,000 police officers deployed in Ol Kalou ahead of the by-elections operate in uniform, use clearly marked police vehicles and display their service numbers, saying the measures will help ensure transparency and maintain public confidence during the vote.
In a letter addressed to the Inspector General of Police, Douglas Kanja, on Wednesday, former Deputy President Rigathi Gachagua said the large security deployment should not be used to disrupt the voting process, intimidate candidates, agents or voters, but should instead support a peaceful and credible election.
Gachagua accused some security officers of acting outside the command of the IG and claimed that plainclothes officers had been involved in incidents targeting DCP supporters during the campaign period.
More To Read
- πππ¬ππ₯ππ’π π‘ ππ¨π’ππ ππ ππ’π§π – All set for Ol Kalou by-election on Thursday as security tightened
- IEBC fines Nakuru East MP David Gikaria Sh2.5 million for electoral code breach
- Goonism: How unemployment is driving youths into politically backed gangs
- Activist moves to court seeking suspension of Ol Kalou by-election over poll integrity concerns
- IG Kanja deploys over 1,000 police officers to secure Ol Kalou by-election
- IEBC: Voters risk Sh1 million fine, three-year jail term for photographing ballots in Ol Kalou by-election
βThe security challenge in Ol Kalou and across Kenya isnβt too much about the goons but the plain clothes rogue police officers outside of your command,βΒ Gachagua told Kanja.
He said the campaigns in Ol Kalou had remained peaceful, disputing claims that young people had been involved in activities likely to disrupt the elections.
According to Gachagua, a group he referred to as the Nairobi Sierra Group, allegedly linked to politicians, was responsible for several incidents during the campaigns, including an attack on DCP officials at the Royal Garden Hotel in Ol Kalou Town on July 1, 2026.
Latest Stories
- Court orders CBK to recognise Sakajaβs new Finance CEC as Nairobi County bank signatory
- State Department for Lands given two weeks to submit report on contested properties
- Nigeria offers clues to new US Africa strategy
- MPs summon PSC officials over irregular recruitment in government agencies
He said the officials were beaten, their items, including a mobile phone, were taken, and eight statements were recorded at Ol Kalou police station without further action being taken.
He also claimed that on July 9, 2026, the DCP campaign team was attacked by plainclothes police officers using unmarked vehicles who sprayed them with pepper spray at 2:00 pm.
Gachagua further alleged that on July 11, 2026, the DCP sound truck was attacked and damaged by hooded gunmen, while on July 13, 2026, there was an attempted assassination of East African Legislative Assembly (EALA) MP Kanini Kega.
βOn July 13, 2026, there was an attempted assassination on EALA MP Kanini Kega. Why havenβt you spoken about it?β he questioned.
The DCP leader said the deployment of more than 2,000 police officers in Ol Kalou was unprecedented in Kenyaβs electoral history and called for all officers involved in security operations to be identifiable.
βThe 2,000 Police Officers deployed must be uniformed, they must display their service numbers, they must not be hooded, and they must use clearly marked police vehicles,β Gachagua said.
He warned that if violence occurred during the by-election, the responsibility would fall on the police because of the high number of officers deployed.
βIf any violence occurs in Ol Kalou, a peaceful constituency, it is your fault and your police. With such an historic number, there should be no iota of electoral violence whatsoever. With 2,000 police officers, there should be no violence unless it is caused by the officers themselves,β he added.
Gachagua further alleged that some deployed officers had received instructions to interfere with different stages of the election process, including voting, counting and tallying.
βThey have been specifically sent to disrupt the commencement of the voting in the morning, disrupt voting, intimidate and harass agents, disrupt counting and tallying of votes and ensure that the UDA candidate is announced the winner,β he claimed.
He also alleged that General Service Unit officers and Anti-Stock Theft Unit officers had instructions to use excessive force if protests occurred after the outcome of the election.
βThe contingent of the GSU officers and anti-stock theft platoons deployed by yourself have instructions to ensure that might there be public disorder after the will of the people is overturned, they should quell it with a brute force never witnessed in the history of Kenya,β Gachagua said.
The DCP leader criticised the state of the police service under IG Kanjaβs leadership, saying the public had lost confidence in the institution. He asked the IG to use the Ol Kalou by-election as an opportunity to restore public confidence in the police service.
βYou have a golden opportunity now; in fact, you may want to use the Ol Kalou by-election to redeem your dwindling public image and reputation among the officers you lead and the people of Kenya,β he said.
He called on IG Kanja to immediately withdraw non-uniformed police officers deployed in Ol Kalou and focus on maintaining peace and protecting law and order during the by-election.
On Tuesday, Kanja said the 114 polling stations would receive security officers in line with standard deployment procedures. He assured residents of Ol Kalou that they would be able to exercise their democratic rights in a peaceful and secure environment.
Other Topics To Read
Top Stories Today
- Ol Kalou by-election: Gachagua demands police officers wear uniforms, use marked vehicles
- Court orders CBK to recognise Sakajaβs new Finance CEC as Nairobi County bank signatory
- State Department for Lands given two weeks to submit report on contested properties
- MPs summon PSC officials over irregular recruitment in government agencies
- KRA recovers Sh35.06 billion through negotiated tax settlements after resolving 993 cases
- Skills for an uncertain future: How youth can navigate a changing job market
`;
}
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
MPs summon PSC officials over irregular recruitment in government agenciesNews
|Lucy Mumbi
|1 hour ago
Why South Africa is Kenyaβs top overseas destination for commercial property investmentBusiness
|Alfred Onyango
|3 hours ago
Ol Kalou by-election: Gachagua demands police officers wear uniforms, use marked vehiclesNews
|Lucy Mumbi
|33 minutes ago
<img src="https://absafricatv.com/wp-content/uploads/2026/07/Cargo-Port-1.jpg" alt="KRA sets August 3 start date for new Advance Cargo Declaration system“>
KRA sets August 3 start date for new Advance Cargo Declaration systemNews
|Bashir Mbuthia
|3 hours ago

Protected witness says he unknowingly transported ex-Kasipul MP Ong’ondo Were’s alleged killerNews
|Carolyne Kubwa
|13 hours ago
Activist moves to court seeking suspension of Ol Kalou by-election over poll integrity concernsNews
|Carolyne Kubwa
|21 hours ago
India protests attacks on two commercial vessels in Strait of Hormuz which left one seafarer deadMiddle-East
|Mary Wambui
|15 hours ago

US launches campaign to block ICC probes of American officials and military, citing threat to sovereigntyWorld
|Bashir Mbuthia
|12 hours ago
Viwandani MCA Aaron Kang’ara Wangare charged over violent Donholm robbery and property damageCity Affairs
|Carolyne Kubwa
|15 hours ago
Africaβs youth are finding jobs – but not the ones they imaginedBusiness
|The Conversation
|12 hours ago
