UN calls for accountability over migrant torture and trafficking at Tunisia-Libya border
Listen to article
3 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.

31 civil society groups urge EU to end migration cooperation with Libya over rights abuses
Mary Wambui
·
12 hours agoRead nextOpens a fresh page.
UN human rights experts say more than 7,400 migrants, refugees and asylum seekers from sub-Saharan Africa have faced arbitrary detention, collective expulsions, trafficking and abuse involving actors in Tunisia and Libya since June 2023.
United Nations (UN) human rights experts have accused actors on both sides of the Tunisia-Libya border of involvement in a systematic pattern of arbitrary detention, collective expulsions and trafficking targeting migrants, refugees and asylum seekers from sub-Saharan Africa.
In a statement issued on Thursday, the experts said they had received reports indicating that more than 7,400 people had been affected since at least June 2023. The allegations implicate Tunisian security forces alongside Libyan state and non-state actors. The reported abuses include unlawful detention, physical violence, torture, sexual violence, forced labour and human trafficking.
According to the experts, testimonies from victims describe a cross-border cycle in which migrants are allegedly detained in Tunisia before being forcibly expelled into Libya. Once there, some are reportedly transferred between detention centres and private locations, where they are subjected to exploitation.
More To Read
- 31 civil society groups urge EU to end migration cooperation with Libya over rights abuses
- Two Sudanese men jailed in UK for piloting migrant boats across English Channel
- UN agencies raise alarm over missing hundreds of migrants off the coast of Myanmar
- Three Kenyans held in Indonesia awaiting deportation as fake job scams continue to trap migrants
- Pope Leo XIV shines spotlight on Mediterranean migration crisis
- Trump suffers major defeat as US Supreme Court protects birthright citizenship for migrants’ children
Women and girls were allegedly trafficked for sexual exploitation and sexual slavery, while men were forced into labour. Some victims were also reportedly transferred repeatedly between different groups, with those unable to pay ransom demands facing continued exploitation.
“We are deeply alarmed by information received describing a system of arbitrary detention, abuse, collective expulsions and trafficking of migrants, refugees and asylum seekers from Tunisia to Libya, with the involvement of Tunisian security forces,” the experts said.
The experts further said migrants detained in Tunisia reported being beaten and abused by uniformed personnel using tasers, iron bars and dogs, while some were allegedly threatened with gunfire. Victims also described repeated searches, humiliation and the confiscation of personal belongings, including mobile phones and identity documents. They also reported being denied adequate food and medical care.
Latest Stories
- Uganda seeks CAF approval to use newly-built stadium for AFCON 2027 qualifiers
- Explainer: Why stress makes you crave comfort food
- African states urged to strengthen support for continental human rights court
- Suspected Somali pirates seize tanker off Yemen’s Hadramawt coast
The officials added that the alleged violence and neglect had, in some cases, resulted in deaths and enforced disappearances. They also cited reports of possible mass graves near military installations in Libya and called for further investigations.
The allegations come amid longstanding concerns over the treatment of migrants travelling through North Africa in an attempt to reach Europe. Libya, in particular, has faced sustained international criticism over the abuse of migrants held in detention facilities run by state authorities and armed groups.
According to the experts, the reported abuses could amount to violations of international human rights law, international criminal law, international humanitarian law and refugee law.
“We urge Tunisia and Libya to carry out prompt, independent, and impartial investigations and ensure accountability for all those responsible, as well as effective access to remedies for victims,” they said.
Other Topics To Read
Top Stories Today
- Kenya could unlock Sh3.1 trillion economic gains through care infrastructure investment – study
- Explainer: Why stress makes you crave comfort food
- African states urged to strengthen support for continental human rights court
- Suspected Somali pirates seize tanker off Yemen’s Hadramawt coast
- Lawyers announce nationwide court boycotts on July 22
- Uganda suspends school trips after Kapchorwa bus crash kills 20 pupils
`;
}
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
Affluent Kenyans ditch traditional property investments for tech, logistics and renewable energy, report showsBusiness
|Alfred Onyango
|1 day ago
Lawyers announce nationwide court boycotts on July 22News
|Bashir Mbuthia
|7 hours ago
Court nullifies appointment of four State corporation CEOs, faults Felix Koskei’s roleNews
|Carolyne Kubwa
|1 day ago
Live blog: Vote counting begins after polls close in hotly-contested Ol Kalou by-electionNews
|Eastleigh Voice Reporter
|1 day ago
DCP’s Kamau Ngotho wins Ol Kalou by-election with 35,440 votesNews
|Lucy Mumbi
|22 hours ago

FIFA introduces championship rings for World Cup winnersNews
|XINHUA
|8 hours ago

MPs question KRA’s Sh2.98 billion tax waiver, missing documents in raw sugar importNews
|Rachael Mutabasi
|18 hours ago

UN sanctions DRC rebel commanders including AFC leader Corneille NangaaNews
|Mary Wambui
|17 hours ago
Kenya bids farewell to five European envoys as EU ties enter new phaseNews
|Mwangi Maina
|18 hours ago

Sudanese army reports destroying 205 RSF combat vehicles in July operationsSudan
|Bashir Mbuthia
|11 hours ago
